Javascript语句执行顺序

Flo*_*lus 4 javascript variables function

var confirm = confirm('Are you sure?');
Run Code Online (Sandbox Code Playgroud)

我刚刚测试了这个语句,我得到一个错误,说明这confirm不是一个函数.

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

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

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

Phy*_*sis 6

由于JavaScript的变量提升:

function myFunction() {
    // ...
    var confirm = confirm('Are you sure?');
    // ...
}
Run Code Online (Sandbox Code Playgroud)

成为:

function myFunction() {
    var confirm;
    // ...
    confirm = confirm('Are you sure?');
    // ...
}
Run Code Online (Sandbox Code Playgroud)

您需要执行以下操作来强制执行您的意思:

function myFunction() {
    // ...
    var confirm = window.confirm('Are you sure?');
    // ...
}
Run Code Online (Sandbox Code Playgroud)