我正在读一本书,鼓励读者出于几个原因,限制全局变量.他们推荐的技术是定义一个全局对象变量,如下所示:
var myapp = {};
var myapp.another_stooge = {
'first-name': 'Lenny',
'last-name': 'George'
};
var myapp.properties = [
'first-name',
'last-name'
];
for (i = 0; i < myapp.properties.length; i += 1) {
document.writeln(myapp.properties[i] + ': ' +
myapp.another_stooge[myapp.properties[i]] +
'<BR/>');
}
Run Code Online (Sandbox Code Playgroud)
这不会写入我的html文件,但是在不使用myapp的情况下实现,它可以工作:
var another_stooge = {
'first-name': 'Lenny',
'last-name': 'George'
};
var properties = [
'first-name',
'last-name'
];
for (i = 0; i < properties.length; i += 1) {
document.writeln(properties[i] + ': ' + another_stooge[properties[i]] + '<BR/>');
}
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些简单但却无法捕捉的东西; 任何方向将不胜感激.谢谢!
var myapp = {};
myapp.another_stooge = {
'first-name': 'Lenny',
'last-name': 'George'
};
myapp.properties = [
'first-name',
'last-name'
];
Run Code Online (Sandbox Code Playgroud)
这应该工作..注意后两个分配中缺少var
您还可以通过将所有变量放入一个立即执行的函数来保持全局范围的清晰.
(function() {
var another_stooge = {
'first-name': 'Lenny',
'last-name': 'George'
};
var properties = [
'first-name',
'last-name'
];
for (i = 0; i < properties.length; i += 1) {
document.writeln(properties[i] + ': ' + another_stooge[properties[i]] + '<BR/>');
}
})();
Run Code Online (Sandbox Code Playgroud)
这导致another_stooge并properties在此匿名函数内声明,而不是全局对象.