我知道转换像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 …