JS: assign document.getElement...不适用于 var/let(不使用)



如果我进行

x = document.getElementsByClassName("something")[0]

我得到了预期的结果。

但如果我做

var x = document.getElementsByClassName("something")[0]

let x = document.getElementsByClassName("something")[0]

我没有定义。

为什么?

声明变量不会返回任何内容(即undefined(,但是分配变量会返回值。例如:

let x, y
x = y = 7  // this sets both x & y to seven

上面的行之所以有效,是因为y = 7返回y的值,然后将其分配给x。但是,您不能对变量声明执行任何操作:

let x = 7
x = let y = 3  // syntax error

关键是声明一个变量不会返回值,这就是为什么在控制台(也在节点REPL中(中看到undefined在它后面,但赋值或其他返回值的值将显示该值。

注意,你可以这样做:

var x = document.getElementsByClassName("something")[0]
x   // this line will return the value of x

document.getElementsByClassName将返回名为HTMLCollection的数组

请看一下这个代码,

var testElements = document.getElementsByClassName('test');
var testDivs = Array.prototype.filter.call(testElements, function(testElement){
return testElement.nodeName === 'DIV';
});

你也可以在这里查看详细信息

最新更新