Cla*_*ude 8 javascript function
这里发生了什么事?如果console.log在内部函数中声明一个变量,则会得到不同的结果
我知道var具有功能范围,内部函数可以从其父级访问变量
function outer() {
var a = 2;
function inner() {
a++;
console.log(a) //log NaN
var a = 8
}
inner()
}
outer()Run Code Online (Sandbox Code Playgroud)
function outer() {
var a = 2;
function inner() {
a++;
console.log(a) //log 3
var b = 8
}
inner()
}
outer()Run Code Online (Sandbox Code Playgroud)
NaN在第一个示例中返回日志3,在第二个示例中返回日志
jro*_*jro 13
这是由于吊装
的声明a在内部功能被提升到函数的顶部,覆盖外部函数的a,所以a是undefined
undefined++返回NaN,因此您的结果。
您的代码等效于:
function outer() {
var a=2;
function inner() {
var a;
a++;
console.log(a); //log NaN
a = 8;
}
inner();
}
outer();
Run Code Online (Sandbox Code Playgroud)
以这种方式重写代码可以很容易地看到正在发生的事情。
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |