是否可以在另一个变量中使用未声明的变量
Is it possible to use an undeclared variable in another variable
我一直想知道这个问题,而且它时不时地弹出来。
var name = document.title;
var user = document.getElementsByClassName("class-name")[0].children[j].getElementsByTagName("a")[0].innerHTML;
var someArr = [];
for (var j = 0; j < document.getElementsByClassName("class-name")[0].children.length; j++) {
if (user == name) {
someArr.push(user)
};
};
alert(someArr);
现在(很明显)这一切都是编造的,但看看变量 "user" 如何检查 children[j],如果我尝试使用这段代码,它会出现出现 "Cannot read property 'getElementsByTagName' of undefined" 行的错误。现在我的问题是:有没有办法让这段代码在不给出错误信息且不执行的情况下工作。我会将它用于 if 循环中的干净代码,就像使用所有变量一样。这也不是 "user" 变量的唯一实例,因此它非常有用。
提前致谢,
丹尼尔.
如果您在for
循环之前使用它,您的j
变量将具有undefined
值。
您可以将它放在函数闭包中,但在我看来,使用这样的变量不会使代码可读。您可以做的是创建一个 getUser()
函数并缓存元素数组。像这样:
var name = document.title;
var getUser = function(elem) {
return elem.getElementsByTagName('a')[0].innerHTML;
};
var initialArr = document.getElementsByClassName("class-name")[0].children;
var someArr = [];
for (var j = 0; j < initialArr.length; j++) {
var user = getUser(initialArr[j]);
if (user == name) {
someArr.push(user)
};
};
alert(someArr);
我一直想知道这个问题,而且它时不时地弹出来。
var name = document.title;
var user = document.getElementsByClassName("class-name")[0].children[j].getElementsByTagName("a")[0].innerHTML;
var someArr = [];
for (var j = 0; j < document.getElementsByClassName("class-name")[0].children.length; j++) {
if (user == name) {
someArr.push(user)
};
};
alert(someArr);
现在(很明显)这一切都是编造的,但看看变量 "user" 如何检查 children[j],如果我尝试使用这段代码,它会出现出现 "Cannot read property 'getElementsByTagName' of undefined" 行的错误。现在我的问题是:有没有办法让这段代码在不给出错误信息且不执行的情况下工作。我会将它用于 if 循环中的干净代码,就像使用所有变量一样。这也不是 "user" 变量的唯一实例,因此它非常有用。
提前致谢,
丹尼尔.
如果您在for
循环之前使用它,您的j
变量将具有undefined
值。
您可以将它放在函数闭包中,但在我看来,使用这样的变量不会使代码可读。您可以做的是创建一个 getUser()
函数并缓存元素数组。像这样:
var name = document.title;
var getUser = function(elem) {
return elem.getElementsByTagName('a')[0].innerHTML;
};
var initialArr = document.getElementsByClassName("class-name")[0].children;
var someArr = [];
for (var j = 0; j < initialArr.length; j++) {
var user = getUser(initialArr[j]);
if (user == name) {
someArr.push(user)
};
};
alert(someArr);