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

Is it possible to use an undeclared variable in another variable

本文关键字:变量 未声明 是否 另一个      更新时间:2023-09-26

我一直对此感到好奇,它时不时地会弹出。

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]的,如果我尝试使用这段代码,它会出现一个错误,类似于"无法读取未定义的属性'getElementsByTagName'"。现在我的问题是:有没有一种方法可以让这些代码在不给出错误消息和不执行的情况下工作。我会将其用于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);