JS变量提升

废话不多说,直接看以下例子,代码地址

函数声明和函数表达式

a()
function a(){
    console.log('a');
}
b()
var b = function (){
    console.log('b')
}
//a
//Uncaught TypeError: b is not a function

很明显,这个大家都知道这个答案,就是很常见的作用域提前,我们下面来解析下上面的例子。其实上面的例子等价于:

var a = function (){
    console.log('a')
}
var b;
a()
b()
b = function(){
    console.log('b')
}

变量作用域提升(仅考虑局部变量)

a()
var a = 1;
function a(){
  console.log('a')
}
a();
//a
//Uncaught TypeError: a is not a function

等价于下面的代码

var a;
a = function(){
    console.log('a')
}
a()
a = 1;
a()

到这里大家应该都明白了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。