var confirm = confirm('Are you sure?');
我刚刚对此声明进行了测试,我收到一条错误消息,指出confirm
不是函数。
我立即检测到变量名称被覆盖了。不过我的问题是为什么?
我知道函数是第一类,并且声明与函数同名的变量将在相对范围内覆盖它。但我的困惑来自于我认为是从右到左",I.E。的执行顺序。函数调用是在确定目标之前进行的。
在函数调用之前,变量是否在这种情况下被定义?
答案 0 :(得分:6)
由于JavaScript的变量提升:
function myFunction() {
// ...
var confirm = confirm('Are you sure?');
// ...
}
成为:
function myFunction() {
var confirm;
// ...
confirm = confirm('Are you sure?');
// ...
}
您需要执行以下操作来强制执行您的意思:
function myFunction() {
// ...
var confirm = window.confirm('Are you sure?');
// ...
}