如果我进行
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';
});
你也可以在这里查看详细信息