所以我听说在没有“var”的情况下初始化的js中的变量将是全局变量。这样:
$(document).ready(function(){
function foo(){
//since i'm not using "var", will this function become global?
}
var bar = function(){
//is this the better way to declare the function?
}
})
如果它是全局的,为什么我无法在控制台中访问它。如果它不是全局的,并且它的范围在函数中,那么省略“var”会花费一些性能吗?感谢。
答案 0 :(得分:13)
只有在没有var
的情况下声明的变量才会变为全局变量,这不适用于函数。
但是,您可以这样声明foo:
foo = function() {}
它应该是全球性的。
由于这些原因(不在头顶),通常不建议省略var
:
for(i = 0; i < arr.length; i++)
(注意缺少var
)由于名为hoisting的语言功能,您可能希望使用var
声明函数
顺便说一句,如果您确实选择使用var
声明功能,我建议您这样做:
var foo = function foo() {}
因为它为函数提供了“名称”而不是被视为匿名函数,这将有助于调试。我相信,大多数人不这样做,并宣布使用function
。