javascriptの面接試験問題

1559 ワード

(申明:本文は新浪微博@ITプログラム猿に転换します.添付ファイルは元の写真です.)
問題1
(function(){var a = b = 5})()
console.log(a);
console.log(b);
 
  出力はundefinedで、5 
  aはvarを通じて説明しますが、b = window.b グローバル変数ですが、厳密なモードではエラーが発生します.
  
var a = b = 5 ; 
   
b = 5 ;
var a = b ; 
 
 
問題2 
生の方法
String.prototype.foo = String.prototype.foo || function(){/..code../}
 
 主に既存の方法をカバーしないようにするべきです.
 
問題3
function test(){
    console.log(a);
    console.log(foo());
    var a = 1 ; 
    function foo() { return 2};

}
test()
 
 
運転結果はundefined、2 理由:変数と関数の説明は前倒しされましたが、変数には値が割り当てられていませんので、Unidefinedです.
 
 
問題四
var fullName = "C";
var obj = {

    fullName : "A",
    prop:{
         fullName:"B",
         getFullName:function(){
      
                   return this.fullName;
          }

     }

}

console.log(obj.prop.getFullName());

var dd = obj.prop.getFullName;

console.log(dd());
 
 
最初の出力Bの2番目の出力はCであり、
最初のconsolie.log()でget Full Nameを呼び出す対象は、Obj.propであるため、thisはBを指す.
第二のconsolie.logs()でget FullNameを呼び出す対象はwindowですので、thisはCを指します.
 
問題5
テーマ4のロゴ出力Bをcallとappyで強制的にコンテキストを変更するにはどうすればいいですか?
dd.call(obj.prop)