是否可以在另一个变量中使用未声明的变量

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);