0

In javascript I have seen the usage of

if (!!foo.bar) {
    doSomething();
}

What is the performance and other differences between this and

if (Boolean(foo.bar)) {
    doSomething();
}

?

Is there any overhead for the use of constructor typecasting over negation?

Another (better) example is:

doSomethingWithBoolean(!!foo.bar);
4

4 回答 4

1

我认为不会有任何重大的性能问题。!!foo.bar用更少的输入做同样的事情。

使用boolean(foo.bar)可能会出现非常非常小的性能问题,因为它使用的是构造函数,但使用今天的硬件是可以忽略的。

毕竟我会简单地使用foo.bar!foo.bar

于 2013-07-24T07:30:12.533 回答
0

通过调用Boolean(foo.bar),您将获得一个包装的布尔对象,该对象将具有一些额外的对象特定功能(在这里您不想要它们)

使用!!foo.bar 你会得到一个布尔文字,所以我认为这个评估会很快。

于 2013-07-24T07:48:41.210 回答
0

双重否定只是更快地键入并缩短文件。这是一种常见的压缩技术。

它可能会(一点点)慢一些,但由于它是一种无处不在的快捷方式,我猜想有一个编译器优化。不要挑剔这样的实现细节!

于 2013-07-24T07:21:17.097 回答
-2

在 Javascript 中,使用

if (Boolean(foo.bar)) {
    doSomething();
}

doSomething 将执行,因为 Boolean() 创建了一个非空对象,即使它是Boolean(false). “布尔”返回一个对象,“!!” 返回一个布尔,例如真/假。我的消息来源在这里

PS:Boolean,以大写开头,是Javascript对象

于 2013-07-24T07:28:05.137 回答