2012-12-24 52 views
-1
var test = 100; 

function test(){ 

var i=0; 

} 

alert(test); 

您可以请测试这个,让我知道变量和函数名称的优先级是什么?当变量和函数具有相同名称时,会发出什么警报?

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

我只想知道为什么会发生这种情况?

任何人都可以帮助我吗?

+0

你自己试过这个吗?如果是这样,我假设你有一个具体的问题,所以请直接提问你的问题。 –

+2

javascript控制台是解决这类问题的好方法。 – bokonic

+1

为什么你不能测试它? –

回答

0

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

我跑就可以了小提琴..

jsfiddle test

+0

感谢您的回应...但是,如果您对该变量发表评论,那么它会提醒整个功能...您可以再次尝试 –

+0

当然。这很容易,下次尝试一下。你prolly会得到downvoted因为它虽然:(对不起(我不会) –

+0

我只是提醒测试,但它为什么提醒整个功能? –

0

不要使用功能名称与变量名称相同。
如果您先定义了一个变量然后再用函数将该变量与覆盖函数一起使用。

function test(){ 

alert(3); 

} 

是相同

var test=function() {alert(3)}; 
0

按变量范围将去功能范围值i = 0,如果你想调用函数u需要调用测试()出侧回值,那么只有它会从范围变量中获取值。

var test = 100; 
function test(){ 
var i=0; 
return i; 
} 
alert(test()); 
0

好吧,让我们看到的JavaScript如何处理下面的代码:

var test = 100; 

function test(){ 

var i=0; 

} 

alert(test); 

随着hoisting,这是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.

相关问题