var confirm = confirm('Are you sure?');
我刚刚测试了这个语句,我得到了一个错误,指出 confirm
不是一个函数。
我立即检测到变量名正在覆盖它。但是我的问题是为什么?
我知道函数是一流的,声明一个与函数同名的变量会在相对范围内覆盖它。但我的困惑来自于我认为是从“右到左”的执行顺序,I.E.在确定目的地之前进行函数调用。
在这种情况下,变量是否在函数调用之前定义?
最佳答案
由于 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?');
// ...
}
关于Javascript 语句的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060411/