小编Bol*_*Key的帖子

为什么隐式转换比 JS 中的显式转换快得多?隐式转换是一种好习惯吗?

我知道转换像String(1234)and这样的类型更干净、更好Number("1234"),但我只是试图对做同样事情的替代方法进行基准测试,特别是"" + 1234 // -> "1234"and - - "1234" // -> 1234

结果非常令人惊讶(对我来说)。我在 Chrome 中对每种方式都迭代了 100,000,000 次。

我使用了这个简单的代码。

var then = Date.now(); 
for (var i = 0; i < 100000000; ++i) {
    var a = - - "1234";
}; 
console.log(Date.now() - then);
Run Code Online (Sandbox Code Playgroud)

Number("1234")花费了 2351 毫秒,而- - "1234"只花费了 748 毫秒。

String(1234)反之亦然,耗时 3701 毫秒,而"" + 1234仅耗时 893 毫秒。

差异惊人地巨大。

我的问题是:是什么让显式转换比隐式转换慢得多?我的直觉告诉我它应该是相反的。

使用隐式转换是一个好习惯吗?尤其是hacky - - "1234"?有更好的选择吗?

PS:我刚刚在 Firefox 中尝试了相同的方法。它大约慢了 500 …

javascript performance type-conversion

5
推荐指数
1
解决办法
749
查看次数

标签 统计

javascript ×1

performance ×1

type-conversion ×1