dub*_*ech 3 javascript hoisting
考虑这两个不同版本的吊装......
mylocation = "dublin"
function outputPosition() {
alert(mylocation);
mylocation = "fingal" ;
alert(mylocation);
}
outputPosition();
Run Code Online (Sandbox Code Playgroud)
这将输出"fingal"然后"fingal"
mylocation = "dublin"
function outputPosition() {
alert(mylocation);
var mylocation = "fingal" ;
alert(mylocation);
}
outputPosition();
Run Code Online (Sandbox Code Playgroud)
这将输出"undefined"和"fingal"
为什么?
一旦你var在javascript函数中使用关键字声明变量,无论你在哪里放置这个声明 - 在函数的顶部或在buttom,它将被视为局部变量.这就是为什么undefined当你在var声明之前尝试获得这样的变量的值时你得到的原因.
在第二个选项中,您mylocation通过var声明隐藏(我希望在外部范围中声明.)一个新变量.
"在JavaScript中,变量可以在使用后声明." 含义:JavaScript将var声明提取到作用域的顶部(无论它在何处声明!),因此在第二个函数var mylocation中隐式定义但未在第一个警报之前分配,因此它undefined在该点输出.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |