在 javascript 中,变量被“推”到其函数的顶部。javascript 中的变量具有函数作用域,而不是像 C、C++、Java 和 C# 那样的“花括号”作用域。
这与您(开发人员)手动将其推到顶部的代码相同:
var func = complicated_function() {
var localvar = 0;
// lots of code
if (something) {
localvar = 35;
}
// lots of code
}
将变量“向上”声明为一个函数对您有帮助吗?至少声明是孤立的。
function whatever() {
var localvar = 0;
var func = function() {
var something = true;
// lots of code
if (something) {
localvar = 35;
}
// lots of code
};
func();
alert(localvar);
}
whatever();
这是 jsFiddle:http: //jsfiddle.net/Gjjqx/
见克罗克福德:
http://javascript.crockford.com/code.html
JavaScript 没有块作用域,因此在块中定义变量会使熟悉其他 C 家族语言的程序员感到困惑。在函数顶部定义所有变量。