我试图了解如何检查数组中未定义哪些变量以及如何使用它们执行某些操作。不幸的是,我得到的代码将覆盖已经在脚本中设置的变量。
任何帮助或建议都将不胜感激!
谢谢,
亚历
for (var i = 0; i < result.length; i++) {
if(window['user' + i] == undefined){
window['user' + i] = // DO SOMETHING WITH THE VARIABLE WHICH IS NOT DEFINED
}
}
答案 0 :(得分:0)
我相信如果您只是寻找任何可能错误的值,这也会有效
if(!window['user' + i])
答案 1 :(得分:0)
有两种类型的未定义属性:尚未定义的属性和已设置为undefined
的属性。
如果您需要检测尚未在对象(或数组)上定义的属性,请使用Object.prototype.hasOwnProperty()
,如下所示:
for (var i = 0; i < result.length; i++) {
if (!Object.prototype.hasOwnProperty.call(window, 'user' + i)) {
window['user' + i] = // DO SOMETHING WITH THE VARIABLE WHICH IS NOT DEFINED
}
}
由于window
是一个对象,您也可以通过它直接调用hasOwnProperty
,如果您信任没人设置它(或Object.prototype.hasOwnProperty
, window
继承了其他内容。代码看起来像这样:
for (var i = 0; i < result.length; i++) {
if (!window.hasOwnProperty('user' + i)) {
window['user' + i] = // DO SOMETHING WITH THE VARIABLE WHICH IS NOT DEFINED
}
}
如果您需要专门检测设置为undefined
的属性,请从上一次检查开始,如果为true,请检查值。假设没有人改变window.hasOwnProperty
,那将是这样的:
for (var i = 0; i < result.length; i++) {
if (window.hasOwnProperty('user' + i) && window['user' + i] === undefined) {
window['user' + i] = // DO SOMETHING WITH THE VARIABLE WHICH IS NOT DEFINED
}
}
您可能还需要检查未定义的属性,或设置为undefined
或null
。再假设没有人改变window.hasOwnProperty
,可能看起来像这样:
for (var i = 0; i < result.length; i++) {
if (!window.hasOwnProperty('user' + i) || window['user' + i] === undefined || window['user' + i] === null) {
window['user' + i] = // DO SOMETHING WITH THE VARIABLE WHICH IS NOT DEFINED
}
}