看看下面的代碼將打印什麼?

看看下面的代碼將打印什麼?

var b = 10;
(function b(){
    b = 20;
    console.log(b); // function b
})();
  • 函數聲明優於變量聲明
  • 在非匿名自執行的函數中,函數變量爲只讀狀態

改造下面的代碼,打印10 20

var b = 10;
(function b(){
    b = 20;
    console.log(b); 
})();
  1. 函數內部添加聲明, 瀏覽器環境
var b = 10;
(function b(){
    var b = 20;
    // console.log(window.b)
    console.log(this.b) 
    console.log(b); 
})();
  1. 傳值
var b = 10;
(function b(i){
    var b = 20;
    console.log(i); 
    console.log(b); 
})(b);

看看下面的代碼將打印什麼?

var a = 10;
(function () {
    console.log(a)
    a = 5
    console.log(window.a)
    var a = 20;
    console.log(a)
})()
  • 由於變量聲明提高 因此函數內部,第一個a 第五行打印undefined
  • 第六行 給內部變量a賦值和window無關,因此 第七行打印10
  • 第八行函數內部變量賦值20 ,第九行打印20
相關文章
相關標籤/搜索