javascript全局变量范围
所以我听说js中初始化时没有“var”的变量是全局变量。因此:javascript全局变量范围,javascript,coding-style,Javascript,Coding Style,所以我听说js中初始化时没有“var”的变量是全局变量。因此: $(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
$(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”会导致性能下降吗?谢谢。只有声明的变量没有
var
才成为全局变量,这不适用于函数
但是,您可以这样声明foo:
foo = function() {}
它应该是全球性的
出于以下原因,通常不建议省略var
:
- 变量解析从最局部的开始,朝着全局名称空间的方向发展,使其速度变慢。在某些浏览器中要慢得多李>
- 通过污染全局名称空间,最终可能会产生命名冲突。比如说,最严重的违规者之一是(i=0;i
(注意缺少
)var
var
声明函数,我建议您这样做:
var foo = function foo() {}
因为它给函数一个“名称”,而不是作为匿名函数处理,这将有助于调试。我相信大多数人不会这样做,而是声明使用
函数。+1表示使用..=函数foo(){}
。我不知道你可以这样叫两个名字。