美文网首页h5
那些年遇到的面试题

那些年遇到的面试题

作者: 圆心角 | 来源:发表于2018-08-16 23:56 被阅读0次

    本人对js掌握特别不好 所以总结一下 以后面试能成功解答

    1、

    const arr = ['', [], null, -0.06, '0', NaN, function(){}];
    let sum = 0;
     for(let index = 0; index < arr.length; index++) {
            if(arr[index]) {
                console.log(arr[index]);
                sum++;
            }
        
        }
    console.log(sum++);  // 4
    
    • 这道题写错是因为对条件认识不完整, 这里面之所以为4 是因为[]、-0.06、 '0'、function(){} 都为true 符合条件 不知道为什么?都为空了,为什么还能为true?? 有知道的请在评论处解释一下 谢谢

    2、

     for(var a = 1,b = 2;a < 5,b < 4; a++, b++) {
    
        }
        console.log(a, b); // 3  4
        console.log(++a , b++);  // 8
    
    • 这道题本不应该做错,但是自己想多了结果也错了, 因为之前自己做过类似的,如果 b = 4时 条件不在允许,a 也就不再继续增加,但是凭着之前的结果好像不是这样,a继续增加了,就又错了。实在是觉得自己苦逼到逗比,已经无人可救。

    3、

            let h = 1;
            var k = 2;
            function fn() {
                console.log(this.h);
                console.log(this.k);
            }
            const obj = {
                h: 'ok',
                k: '100',
                fn
            }
    
            obj.fn();  // OK 100
    
            const f = obj.fn;
    
            f(); // undefined 2
    
    
    • 这道题做错是最后一个错了,f() 的结果写成了 1 2
      从这个例子中发现了一个现象 变量的提升和作用域 看下面的例子

    4、

           var vx = 229;
           (function() {       
               console.log(vx); // 229
           })()
    // 下面的例子
    
           var vx = 229;
           (function() {       
               console.log(vx); // undefined
               var vx = 555;
           })()
    
    为什么函数里在声明一次vx 打印的就是undefined 什么原理??
    好像是这样的···      
    就相当于
           var vx = 229;
           (function() {   
               var vx;     //declaration hoisting
               console.log(vx); // undefined
               vx = 555;
           })()
    
    难道这就是传说中的变量的提升···在function的域中 变量vx的声明被提升了,真是费解了我多年
    
     `
        
    

    相关文章

      网友评论

        本文标题:那些年遇到的面试题

        本文链接:https://www.haomeiwen.com/subject/blqabftx.html