【问题标题】:JavaScript: Can the Boolean object be used as a callback function?JavaScript:布尔对象可以用作回调函数吗?
【发布时间】:2016-09-23 15:08:07
【问题描述】:

我想写array.some(Boolean) 来测试array 中的任何元素是否为真。

以这种方式使用Boolean 对象有什么问题吗?它在现代浏览器中是否具有相同的行为?是否总是等同于array.some(function(elem) { return !!elem; })

【问题讨论】:

  • 据我所知,这个函数可以将任何值转换为布尔值。任何函数也是一个对象,所以布尔是一个对象应该不是问题。
  • 当然,有幽默感的人可以用Boolean = function() { return true; }; 覆盖Boolean 函数。除此之外,应该没有禁忌症。

标签: javascript callback boolean ecmascript-6


【解决方案1】:

以这种方式使用Boolean 对象有什么问题吗?

没有。与 parseInt 不同(例如会出现问题),Boolean 只需要一个参数。因此,将其他回调参数(索引和数组)传递给它应该没有任何问题,它会简单地忽略它们。

它在现代浏览器中是否具有相同的行为?

我希望如此。如果你不能信任Boolean 函数,还剩下什么?

它是否总是等同于array.some(function(elem) { return !!elem; })

是的。来自spec

Boolean 作为函数而不是构造函数调用时,它会执行类型转换。

这也是!! 的本质所在。


规范中的相关参考:

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2011-01-28
    • 2015-09-09
    • 2013-11-02
    相关资源
    最近更新 更多