迷惑性的js面試題聚集

一、delete的用法函數

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

答案爲1。delete通常用於刪除對象的屬性,刪除後其結果爲undefined;但其不能刪除變量。delete若是能夠刪除 返回true;不能刪除返回false。this

二、運算符code

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對象

三、instanceofio

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

答案爲"false"。a instanceof b 用於檢測a是否是b的實例。若是題目f中沒有return f,則答案明顯爲true;而在本題中new f()其返回的結果爲f的函數對象,其並非f的一個實例。console

四、考眼力function

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

答案爲"undefined"。傳遞進去的參數並無bar屬性變量

五、thisco

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

答案爲"undefined"。將foo.bar賦值給f,至關於f(),故其this指向windowlet

相關文章
相關標籤/搜索