h5

那些年遇到的面试题

2018-08-16  本文已影响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

2、

 for(var a = 1,b = 2;a < 5,b < 4; a++, b++) {

    }
    console.log(a, b); // 3  4
    console.log(++a , b++);  // 8

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

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的声明被提升了,真是费解了我多年

 `
    
上一篇 下一篇

猜你喜欢

热点阅读