Javascript语句执行顺序

时间:2014-11-21 11:33:40

标签: javascript function variables

var confirm = confirm('Are you sure?');

我刚刚对此声明进行了测试,我收到一条错误消息,指出confirm不是函数。

我立即检测到变量名称被覆盖了。不过我的问题是为什么?

我知道函数是第一类,并且声明与函数同名的变量将在相对范围内覆盖它。但我的困惑来自于我认为是从右到左",I.E。的执行顺序。函数调用是在确定目标之前进行的。

在函数调用之前,变量是否在这种情况下被定义?

1 个答案:

答案 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?');
    // ...
}