37
如果你去一个谷歌的结果页面,并运行rwt.toString()
,你会看到,返回调用这个函数是:在javascript中使用“return!0”有什么意义吗?
return !0;
我想不出任何理由为什么这不会永远是true
。这仅仅是true
的简写,还是有更多的进展呢?
如果你去一个谷歌的结果页面,并运行rwt.toString()
,你会看到,返回调用这个函数是:在javascript中使用“return!0”有什么意义吗?
return !0;
我想不出任何理由为什么这不会永远是true
。这仅仅是true
的简写,还是有更多的进展呢?
它总是如此,但它需要2个字节下载(!0
是2个字符)而不是4个字节来下载布尔值true
。
大多数Javascript minifiers会将true
转换为!0
,并将其转换为!1
。您可以通过在Google Closure Compiler上输入var y = true;
并进行简单优化来看到一个示例:http://closure-compiler.appspot.com/home
但是,它只需要1个字节即可下载1. return 1;本来会工作的,不是吗?非零,我们都知道你不测试为真,你测试不是错误的。 – stu 2012-01-05 21:34:28
这很有趣。大多数JavaScript实现优化!0和!1为true和false而不计算? – Kekoa 2012-01-05 21:41:34
@stu'return 1;'返回'number'类型。如果有人使用'==='或'!=='运算符的返回值,他们会从'!0'得到预期的结果,但不会从'1'得到预期的结果。 – Paulpro 2012-06-22 16:58:20