> (function () { return this; }).call(false) false > !!(function () { return this; }).call(false) true
在Firefox 4 beta和Chrome中都是最新的.
它就像……什么时候是布尔值,而不是布尔值?
解决方法
看来,当一个原始布尔值作为第一个参数传递给call或apply时,它会被自动装入一个Boolean对象. Firefox 4上的Firebug中很明显:
>>> (function () { return this; }).call(false) Boolean {}
在Chrome的检查员中,它最初令人困惑,但有一点探索揭示了真相:
>>> (function () { return this; }).call(false) false >>> typeof (function () { return this; }).call(false) "object"
所有JavaScript对象都是“truthy”,甚至是新的布尔值(false)和新的Number(0).因此,使用两个否定运算符(!!技巧)将它们转换为真正的布尔值.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。