考虑到最佳实践,我们可以使用双重一元运算符! 在JavaScript中?
为了我的理解一元!
运算符执行隐式类型转换,有时用于类型转换。
所以基本上!
运算符将其操作数转换为布尔值并将其取反。
现在:
!!x // Same as Boolean(x)
事实上:
!!'true' === Boolean('true') // true
所以我假设!!x
和Boolean(x)
执行相同的操作。
我想知道:
你的假设是正确的。 这正是它的工作原理,我不知道在使用时需要特别小心。
说到良好的做法,你可能会有尽可能多的人支持快速的“肮脏” !!
有人会主张使用Boolean
函数; 然而,从我的经验看来,这!!
在库代码中更常见(查看jQuery源代码,你有很多东西,比如return !!locked;
)。 恕我直言,它是足够的识别使用而不降低代码的可读性。
在ECMAScript中这已经是很长时间的标准了; 我不能说老版本的IE浏览器(在IE 8之前),但你几乎可以相信所有现代浏览器在这种情况下的表现都一样。
标准中的有用参考:
你知道任何警告让我的假设错了吗?
你的假设是正确的。 Boolean
函数和!!
具有相同的功能。
从良好的做法来看,哪种方式应该是首选?
我建议使用一元运算符两次,因为它比使用100,000次迭代的布尔运算速度快至少两倍
JS小提琴链接:https://jsfiddle.net/vj593auw/1/
你知道在不同的ECMAScript版本或浏览器厂商之间有什么区别吗?
布尔运算符和一元运算符是从JavaScript 1.0实现的,所以它们应该可以在所有支持JavaScript的浏览器中使用。
链接地址: http://www.djcxy.com/p/73925.html上一篇: Considering best practices, can we use double unary operator ! in JavaScript?