如何在嵌套结构中声明变量
How to declare a variable inside nested structure?
假设我有一个嵌套结构,其中包含JavaScript中的对象和函数,如下所示:
this.x = {
f1: function() {
},
f2: function() {
},
nested: {
f3: function() {
},
f4: function() {
}
}
}
假设我想要声明一个只有函数f3和f4才知道的变量。在哪里以及如何声明这个变量?
从您的结构来看,嵌套应该是一个对象,对吗?您可以使用所谓的自执行函数。
x = {
f1: function() {
//Does not have access to abc
},
f2: function() {
//Does not have access to abc
}
};
x.nested = (function() {
var abc = '123';
//Must return an object here to keep nested as an object
return {
f3: function() {
console.log(abc);
},
f4: function() {
console.log(abc);
}
};
})();
包含在x.nested
中的函数将能够访问abc
,就好像它是彼此共享的全局变量一样,而f1
和f2
则不能。
你能做这样的事情吗?
this.x = {
f1: function() {
},
f2: function() {
},
nested: (function() {
var nested_var;
return {
f3: function() {
// nested_var in scope here
},
f4: function() {
// and here, shared between f3 and f4
}
};
})();
}
只需在函数范围内声明变量,它将仅对该函数可见。示例
function f3() {
var nestedVar = 3;
}
var notNested = nestedVar; // this will not work
也许是这样的:
this.x = {
f1: function() {
},
f2: function() {
},
nested: (function(){
var priv=0;
return {
f3:function(){priv++;},
f4:function(){return priv;}
};
})()
};
(function(){/*code*/})()
部分是一个匿名函数,然后执行(您有时会在用户脚本和bookmarklet中看到这些)。
相关文章:
- 使用同一对象中的其他变量声明变量
- 用||声明变量
- 使用javascript使用for循环声明变量
- JavaScript-用for循环项声明变量
- try声明变量的作用域
- 有没有一种方法可以使用函数参数的值来声明变量
- 在使用javascript再次声明变量之前,请先清除或删除该变量
- Javascript未声明变量
- 在Javascript中,我可以在声明变量之前使用它吗
- 在html文档的开头声明变量
- 按什么顺序声明变量和函数
- 如何以正确的方式在jQuery中声明变量
- 在 Angular 服务中接收函数的未声明变量
- 字典和声明变量
- 需要一些有关以以下样式声明变量的信息
- 在 jQuery 中使用常量声明变量
- 从外部文件在打字稿中声明变量得到引用错误:..未定义
- JavaScript,声明变量时混淆语法
- 在 javascript 函数和内存管理中声明变量
- Javascript 使用 if 语句声明变量