gpt4 book ai didi

Javascript 问题 : about variable definition

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:02 25 4
gpt4 key购买 nike

我不知道为什么如果我用“var”指定一个变量它不起作用:像这样:

var mytool = function(){
return {
method: function(){}
}
}();

后来我在同一个模板中使用它:mytool.method。这将输出 mytool was not defined。

但是如果我这样定义它:

     mytool = function(){
return {
method: function(){}
}
}();

然后就可以了。

最佳答案

Javascript 有函数作用域。变量在声明它的函数内的范围内,该函数还包括您可以在该函数内定义的任何函数。

function () {
var x;

function () {
// x is in scope here
x = 42;

y = 'foo';
}

// x is in scope here
}

// x is out of scope here

// y is in scope here

声明变量时,使用 var 关键字。
如果您不使用 var 关键字,Javascript 将向上遍历作用域链,期望找到在更高函数某处声明的变量。这就是为什么上面的 x = 42 赋值给用 var x 高一级声明的 x 的原因。

如果您之前根本没有声明变量,Javascript 将一直遍历到全局对象并在那里为您创建该变量。上面的 y 变量作为 window.y 附加到全局对象,因此在声明函数之外的范围内。
这很糟糕,你需要避免它。使用 var 在正确的范围内正确声明变量。

关于Javascript 问题 : about variable definition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311328/

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