美文网首页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