关于javascript:看看下面的代码将打印什么

37次阅读

共计 515 个字符,预计需要花费 2 分钟才能阅读完成。

看看上面的代码将打印什么?

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

正文完
 0