作用域
函数的作用域指的是在{}内所执行的方法。
function foo() {
var a = 1;//这个a的作用域在foo中
function foo2() {
var a = 2;//这个a的作用域在foo2中
console.log(a)//2
}
foo2()
console.log(a)//1
}
foo()
由上可知,变量的执行只在对应的作用域中才会有效。
function foo() {
var b = 2//在foo中定义b
function foo2() {
b = 3//在foo2中对b重新赋值
}
foo2()
console.log(b)//3
}
foo()
由上可知,在在foo2中对b重新赋值会对foo中的b产生影响。
变量声明提前
function foo() {
console.log(b)//undefined
var b = 2//在foo中定义b
console.log(b)//2
}
foo()
使用var定义变量时,提前使用变量时,变量值为undefined。
function foo() {
console.log(b)//会出现暂时性死区
let b = 2//在foo中定义b
console.log(b)//不会执行
}
foo()
使用let定义变量时,提前使用变量时,会出现暂时性死区。
有兴趣的话可以去看看es6对于暂时性死区的详解,这里不做过多赘述。
本文深入探讨了函数作用域的概念,解释了变量在不同作用域内的行为,以及如何通过变量声明提前和let关键字引发的暂时性死区来理解JavaScript的执行机制。
2740

被折叠的 条评论
为什么被折叠?



