欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2019前端面试题(二)

程序员文章站 2022-03-04 12:20:39
...

闭包作用域

变量提升var a;不管条件是否成立都要进行变量提升,在全局作用域下声明的变量,也相当于给Window设置了一个对象属性,而且两者间建立了映射机制,window.a = undefined

 console.log(a);
        var a = 12;
        function fn(){
            console.log(a);
            var a = 13;
        }
 fn();
 console.log(a);
 执行结果:undefined undefined 12(变量提升)
 
 console.log(a);
    var a = 12;
    function fn(){
        console.log(a);
        a = 13;
    }
 fn();
 console.log(a);
 执行结果:undefined 12 13
 
 console.log(a);
    a = 12;
    function fn(){
        console.log(a);
        a = 13;
    }
fn();
console.log(a);
执行结果:程序报错

下面代码的执行结果是

var foo = 1;
function fn(){
    if(!foo){
          var foo = 10
    }
    console.log(foo);
 }
fn();
执行结果:10

var n = 0;
function a(){
     var n = 10;
     function b(){
       n++;
       console.log(n);
     }
    b();
    return b;
    }
    var c = a();
    c();
    console.log(n);
    执行结果:11,12,0
    
    var a = 10,b = 11,c = 12;
    function test(a){
        a = 1;
        var b = 2;
        c = 3;
    } 
    test(10);
    console.log(a);
    console.log(b);
    console.log(c);
    执行结果:10,11,3
    
    if(!('a' in window)){
        var a = 1;
    }
    console.log(a);
    执行结果:undefined
  • in检测属性是否属于这个对象,私有、公有都可以
  • hasOwnProperty检测属性是否属于这个对象的私有属性
相关标签: js面试题