我需要了解浏览器中的JavaScript引擎如何读取函数.请考虑以下代码:
var g = 5;
alert(g); //alerts 5
function haha() {
alert(g); // alerts NOTHING. Why is this? Why not alert 5? var g = 45 hasn't yet occurred
var g = 45;
alert(g); // alerts 45
};
haha();
alert(g); // alerts 5. Because g = 45 is a local variable.
Run Code Online (Sandbox Code Playgroud)
您alert(g)在haha功能警报中看到的效果undefined来自变量提升.
该haha函数实际执行如下:
function haha() {
var g;
alert(g);
g = 45;
alert(g);
}
Run Code Online (Sandbox Code Playgroud)
这是因为变量和函数定义在JavaScript中被提升到其范围的顶部.
这种效果可能导致一些相当不直观的行为,例如你所看到的.简单的解决方案是在任何执行代码之前始终声明变量和函数,以便编写的代码与正在执行的代码匹配.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |