当我为变量和函数命名时会发出什么警报?

时间:2012-12-24 06:41:32

标签: javascript

var test = 100;

function test(){

var i=0;

}

alert(test);

请测试一下,让我知道变量和函数名称的优先级是什么?

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

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

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:0)

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

我跑了一个小提琴......

jsfiddle test

答案 1 :(得分:0)

请勿使用与变量名称相同的功能名称 如果你先定义一个变量然后再运行,那么该变量将使用函数覆盖。

function test(){

alert(3);

}


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

答案 2 :(得分:0)

根据变量作用域,它将用于函数作用域值i = 0如果你想调用函数你需要调用带有返回值的test()out,然后它只会从作用域变量中获取值。

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

答案 3 :(得分: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了。