gpt4 book ai didi

javascript - 帮助我理解这个结构(词法范围)

转载 作者:行者123 更新时间:2023-11-30 10:08:31 24 4
gpt4 key购买 nike

下面是我试图理解的一些代码的简化。

我们试图在这个 javascript 片段中做什么?看起来我们正在创建名为 myCompany 的对象 (?)(如果尚未创建),然后将子对象 myProject 添加到 myCompany。然后在 myCompany.myProject 中创建一个局部变量,在函数 myCompany.myProject.myfunction 中创建另一个局部变量。最后的 () 让它立即执行。我们这样做是为了让 localVariable_1 远离全局空间?

var myCompany= myCompany || {};   
if (!myCompany.myProject) {
myCompany.myProject = {};
}

myCompany.myProject = function () {

var localVariable_1;

function myFunction(){
var anotherlocalVariable;
// .. do some stuff
}

}();

最佳答案

第一行检查对象是否存在,如果不存在则使用简写定义 {} 创建对象。 || 比较。如果参数一为空,则设置参数二。

下一行的 if 检查是否未在对象上设置属性 myProject。 ! 是运算符。如果 myCompany.myProject 返回未定义,则此 if 子句返回 true。当 true 时创建对象作为属性 myProject。

第三部分:myProject 被替换为一个函数对象。此函数在 { 和 } 之间定义,但会立即被函数声明后面的 () 调用。

localvariable_1 永远不会在全局范围内,因为它有 var 语句。将其绑定(bind)到 myCompany.myProject 函数的范围。也许直接调用此函数来设置一些初始值,但将它们包装在一个可以在另一时刻重新使用以更改值的函数中。

关于javascript - 帮助我理解这个结构(词法范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831570/

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