迷惑性的js面试题搜集

1、delete的用法

    (function(x){
        delete x;
        console.log(x);
    })(1)

答案为1。delete平常用于删除对象的属性,删除后其效果为undefined;但其不能删除变量。delete假如能够删除 返回true;不能删除返回false。

2、运算符

    var x=1;
    if(function f(){}){
        x += typeof f;
    }
    console.log(x)
    
    a:"1undefined"   b:"1function"
    c:NaN            d:报错

答案为”1undefined”。前提推断为假的状况有:0,false,”,null,undefined,未定义对象。函数声明写在运算符中,其为true,但放在运算符中的函数声明在实行阶段是找不到的。别的,对未声明的变量实行typeOf不会报错,会返回undefined

3、instanceof

   function f(){
        return f;
   }
   new f() instanceof f;

答案为”false”。a instanceof b 用于检测a是否是b的实例。假如问题f中没有return f,则答案显著为true;而在本题中new f()其返回的效果为f的函数对象,其并非f的一个实例。

4、考眼光

  (function(foo){
        return typeof foo.bar;
  })( {foo:{bar:1}} )

答案为”undefined”。通报进去的参数并没有bar属性

5、this

  var foo = {
        bar: function(){
            return this.baz;
        },
         baz:1
    }
    console.log(typeof (f=foo.bar)());

答案为”undefined”。将foo.bar赋值给f,相当于f(),故其this指向window

    原文作者:lees0839
    原文地址: https://segmentfault.com/a/1190000007781180
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞