-1
var test = 100;

function test(){

var i=0;

}

alert(test);

您能否对此进行测试并让我知道变量和函数名称的优先级是什么?

经过上述测试后,请尝试评论第一行// var test = 100; 并检查输出是什么。

我只想知道为什么会这样?

谁能帮我?

4

4 回答 4

0

好吧,让我们看看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 警报。

于 2012-12-24T07:55:48.867 回答
0

不要使用与变量名相同的函数名。
如果你先定义一个变量然后函数,这个变量用函数覆盖。

function test(){

alert(3);

}


var test=function() {alert(3)};
于 2012-12-24T07:13:43.117 回答
0

根据变量作用域,如果你想调用函数,它将使用函数作用域值 i=0,你需要调用 test() 并返回值,那么只有它会从作用域变量中获取值。

var test = 100;
function test(){
var i=0;
return i;
}
alert(test());
于 2012-12-24T07:32:41.700 回答
0

它输出 100。我假设因为你是alert()变量test,而不是test()函数

我对它做了一个小提琴..

jsfiddle测试

于 2012-12-24T06:44:44.970 回答