【1-3】变量提升和函数提升

变量提升和函数提升

在作用域一节提到过js的执行顺序,先收集声明,做好准备,然后编译代码,再然后执行。也就是说,所有的声明语句无论写在代码的什么位置,在编译执行的时候,都会优先’执行‘,这就是所谓的提升,更精确的说是声明提升

简单说一下

var a = 2 对于这行声明赋值语句,我们必须要有个认识,可以分解成一下:

var a  // 声明语句
a = 2  // 赋值语句

声明语句和赋值语句有个区别,声明语句会进行提升,赋值语句不会

变量提升

代码:

console.log(a) // undefined
var a = 2

实际上:

var a
console.log(a) // undefined
a = 2

代码:

a = 2
var a
console.log(a) // 2

实际上:

var a
a = 2
console.log(a) // 2

函数表达式不提升

代码:

foo() // 2
var foo = function() {console.log(1)}
function foo() {
    console.log(2)
}

实际上:

function foo() {
    console.log(2)
}
foo() // 2
foo = function() {console.log(1)}

变量和函数名同名

函数声明在前,变量声明在后

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容