Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将节点列表视为数组的正确方法?_Javascript_Arrays_Nodelist - Fatal编程技术网

Javascript 将节点列表视为数组的正确方法?

Javascript 将节点列表视为数组的正确方法?,javascript,arrays,nodelist,Javascript,Arrays,Nodelist,好的,所以我知道使用document.querySelectorAll(节点列表)结果的“正确”方法的传统智慧是使用以下方法将其转换为数组: Array.prototype.slice.call(elements) 但是,我一直在尝试将它们直接用作类似阵列的对象,它似乎在以下结构中起作用: document.querySelectorAll('selector').forEach(elem => console.log(elem.tagName)); 我的问题是,使用这种更方便的语法是

好的,所以我知道使用document.querySelectorAll(节点列表)结果的“正确”方法的传统智慧是使用以下方法将其转换为数组:

Array.prototype.slice.call(elements)
但是,我一直在尝试将它们直接用作类似阵列的对象,它似乎在以下结构中起作用:

document.querySelectorAll('selector').forEach(elem => console.log(elem.tagName));
我的问题是,使用这种更方便的语法是否会产生意想不到的后果

虽然
NodeList
不是
数组
,但可以使用
forEach()对其进行迭代。还可以使用
Array.from()
将其转换为真实的
数组

但是,一些较旧的浏览器没有实现
NodeList.forEach()
Array.from()
。使用
Array.prototype.forEach()
可以避免这种情况-请参阅本文档的示例

---

除IE之外的所有浏览器都支持所有其他方法。因此使用起来有点安全

节点列表实现:

  • [属性]长度-与数组相同。长度
  • [方法]项目-
    列表。项目(5)==列表[5]
  • [方法]forEach-与数组相同。forEach
  • [方法]条目-与数组相同。条目
  • [方法]值-与数组相同。值
  • [方法]键-与数组相同。键
  • 虽然
    NodeList
    不是
    数组
    ,但可以使用
    forEach()对其进行迭代。还可以使用
    Array.from()
    将其转换为真实的
    数组

    但是,一些较旧的浏览器没有实现
    NodeList.forEach()
    Array.from()
    。使用
    Array.prototype.forEach()
    可以避免这种情况-请参阅本文档的示例

    ---

    除IE之外的所有浏览器都支持所有其他方法。因此使用起来有点安全

    节点列表实现:

    • [属性]长度-与数组相同。长度
  • [方法]项目-
    列表。项目(5)==列表[5]
  • [方法]forEach-与数组相同。forEach
  • [方法]条目-与数组相同。条目
  • [方法]值-与数组相同。值
  • [方法]键-与数组相同。键

  • 根据规范,
    querySelectorAll
    返回一个
    NodeList
    ,它只保证有它的元素和
    length
    属性。所以,即使你的浏览器支持这一点,这也不是一个好主意。如果要寻找更方便的语法,可以使用
    数组。从
    或扩展运算符:

    Array.from(document.querySelectorAll('selector')).forEach()
    […document.querySelectorAll('selector')].forEach()
    
    根据规范,
    querySelectorAll
    返回一个
    NodeList
    ,它只保证有它的元素和
    length
    属性。所以,即使你的浏览器支持这一点,这也不是一个好主意。如果要寻找更方便的语法,可以使用
    数组。从
    或扩展运算符:

    Array.from(document.querySelectorAll('selector')).forEach()
    […document.querySelectorAll('selector')].forEach()
    
    如果您的浏览器支持它,就可以了;并非所有人都这样做。您可以添加for IE。如果您的浏览器支持它,就可以了;并非所有人都这样做。对于
    NodeList.prototype.forEach()