gpt4 book ai didi

javascript 全局变量作用域

转载 作者:搜寻专家 更新时间:2023-11-01 04:52:47 25 4
gpt4 key购买 nike

所以我听说 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?
}
})

如果它是全局的,为什么我无法在控制台中访问它。如果它不是全局的,并且它的作用域在函数中,那么省略“var”会不会影响一些性能?谢谢。

最佳答案

只有在没有 var 的情况下声明的变量成为全局性的,这不适用于函数。

但是,您可以像这样声明 foo:

foo = function() {}

而且它应该是全局性的。

省略 var由于这些原因(不在意),通常不推荐使用:

  • 变量解析从最局部的地方开始,然后在全局命名空间中查找,从而使其变慢。在某些浏览器中要慢得多。
  • 您往往最终会因污染全局命名空间而产生命名冲突。比方说,最严重的罪犯之一是for(i = 0; i < arr.length; i++)。 (注意缺少 var )

您可能希望使用 var 声明函数由于称为 hoisting 的语言功能

顺便说一句,如果您选择使用 var 声明函数,我建议您这样做:

var foo = function foo() {}

因为它给函数一个“名字”而不是被当作一个匿名函数,这将有助于调试。大多数人不这样做并使用 function 声明,我相信。

关于javascript 全局变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com