作用域
函数的作用域指的是在{}内所执行的方法。
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对于暂时性死区的详解,这里不做过多赘述。