var test = 100;
function test(){
var i=0;
}
alert(test);
您能否对此进行测试并让我知道变量和函数名称的优先级是什么?
经过上述测试后,请尝试评论第一行// var test = 100;
并检查输出是什么。
我只想知道为什么会这样?
谁能帮我?
var test = 100;
function test(){
var i=0;
}
alert(test);
您能否对此进行测试并让我知道变量和函数名称的优先级是什么?
经过上述测试后,请尝试评论第一行// var test = 100;
并检查输出是什么。
我只想知道为什么会这样?
谁能帮我?
好吧,让我们看看javascript如何处理以下代码:
var test = 100;
function test(){
var i=0;
}
alert(test);
使用提升,这是 JS 解析器将如何转换您的代码:
// Variables & functions declarations are hoisted
var test;
function test() {
var i = 0;
}
// Then the actual code is run. Thus, your assignment.
test = 100;
alert(test);
我想你现在明白为什么它会发出 100 警报。
不要使用与变量名相同的函数名。
如果你先定义一个变量然后函数,这个变量用函数覆盖。
function test(){
alert(3);
}
和
var test=function() {alert(3)};
根据变量作用域,如果你想调用函数,它将使用函数作用域值 i=0,你需要调用 test() 并返回值,那么只有它会从作用域变量中获取值。
var test = 100;
function test(){
var i=0;
return i;
}
alert(test());