繁体   English   中英

函数中的方括号是什么意思?

[英]What do empty brackets inside a function mean?

我遇到了以下代码,我很好奇[]含义:

function checkForImage(mutation) {
        if (mutation.addedNodes && (mutation.addedNodes.length > 0)) {
            [].slice.call(mutation.addedNodes).forEach(function(node) { ...

目的只是为了获得一个数组( []是一个数组)以便能够获得slice函数。

这是必需的,因为mutation.addedNodes可能类似于“数组”:数组函数可以工作,但它不是Array的实例。 在这里,此带有slice构造构成一个数组(以便forEach函数可用)。 例如,此结构在活动节点列表中很常见。 您可以在此页面上的控制台中对其进行测试:

document.getElementsByTagName('img').constructor // -> NodeList
document.getElementsByTagName('img').forEach // -> undefined
[].slice.call(document.getElementsByTagName('img')).constructor // -> Array
[].slice.call(document.getElementsByTagName('img')).forEach // -> a function

也可能是

Array.prototype.slice.call(mutation.addedNodes).forEach(function(node) {

这样可以避免创建无用的实例(其成本可能非常低),但是会更加冗长。

但是更简单,更清洁的解决方案本来是

[].forEach.call(mutation.addedNodes, function(node) {

除非某些隐藏代码证明使用实数组是合理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM