Javascript 当变量和函数的名称相同时,会出现什么警报?

Javascript 当变量和函数的名称相同时,会出现什么警报?,javascript,Javascript,请您测试一下,让我知道变量和函数名的优先级是多少 在完成上述测试后,请尝试注释第1行//var test=100 然后检查输出是什么 我只是想知道为什么会这样 有人能帮我吗?它输出100个。我假设是因为您是alert()test变量,而不是test()函数 我用小提琴演奏了一下 不要使用与变量名相同的函数名。 如果先定义变量,然后定义函数,则使用函数覆盖变量 var test = 100; function test(){ var i=0; } alert(test); 与 funct

请您测试一下,让我知道变量和函数名的优先级是多少

在完成上述测试后,请尝试注释第1行
//var test=100
然后检查输出是什么

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


有人能帮我吗?

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

我用小提琴演奏了一下


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

var test = 100;

function test(){

var i=0;

}

alert(test);

function test(){

alert(3);

}

根据变量作用域,它将选择函数作用域值i=0。如果要调用函数u,需要调用test()并返回值,则只有它会从作用域变量中获取值

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

好的,让我们看看javascript如何处理以下代码:

var test = 100;
function test(){
var i=0;
return i;
}
alert(test());
使用,JS解析器将如何转换代码:

var test = 100;

function test(){

var i=0;

}

alert(test);

我想你现在明白为什么它会提醒100人了。

你自己试过吗?如果是这样的话,我想你心里有一个特定的问题,所以请更直接地问你的问题。javascript控制台是回答类似问题的好方法。我已经测试过了,但只想知道变量和函数的优先级。。。当您在第1行进行注释时,您将获得整个函数get alert。。。请再试一次,让我知道为什么会发生这种情况。关于我的术语滥用,但我认为类似的情况正在发生:在静态分析期间声明非匿名函数,并将其“拉到顶部”。所以最后一个定义
test
是有效的。感谢您的回复。。。但是如果您对变量进行注释,那么它将警告整个函数。。。当然,你能再试一次吗。这很容易,下次你自己试试。你可能会因此而被否决:(抱歉(我不会)我只是提醒测试,但为什么它会提醒整个函数?
// 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);