Flo*_*lus 4 javascript variables function
var confirm = confirm('Are you sure?');
Run Code Online (Sandbox Code Playgroud)
我刚刚测试了这个语句,我得到一个错误,说明这confirm
不是一个函数.
我立即检测到变量名称被覆盖了.不过我的问题是为什么?
我知道函数是第一类,并且声明与函数同名的变量将在相对范围内覆盖它.但是我的困惑来自于我认为从"从右到左"的执行顺序,IE在确定目的地之前进行了函数调用.
在函数调用之前,变量是否在这种情况下被定义?
由于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)