举个例子:
var is_android = true;
if (is_android) {
function foo() {
alert('I am Android');
}
} else {
function foo() {
alert('I am NOT Android');
}
}
foo();
它将被解释为
function foo() {
alert('I am Android');
}
function foo() {
alert('I am NOT Android');
}
var is_android;
is_android = true;
if (is_android) {
} else {
}
foo();
它会警告“我不是Android”;看起来第二个foo定义会覆盖第一个foo定义。
它将函数定义视为声明,我的问题是,这种情况何时会发生,或者总是如此?如何使javascript将某些东西视为函数定义?
感谢。
答案 0 :(得分:4)
函数声明始终提升到包含范围的顶部。如果您希望它是有条件的,您应该使用作业:
var is_android = true;
var foo;
if (is_android) {
foo = function() {
alert('I am Android');
}
} else {
foo = function() {
alert('I am NOT Android');
}
}
foo();