2012-01-05 8 views
37

あなたがGoogleの結果ページに移動し、rwt.toString()を実行する場合は、この関数の戻り値の呼び出しがあることがわかります:javascriptで「return!0」を使用することはありますか?

return !0; 

私は、これは常にではないでしょうなぜ何らかの理由を考えることはできませんtrue。これはちょうどtrueの省略形ですか、それとももっと進んでいますか?

答えて

44

常に真ですが、ブール値trueをダウンロードするには、ダウンロードに2バイト(!0は2文字)の代わりに4バイトがかかります。

ほとんどのJavaScriptのminifierはtrue!0に、falseを!1に変換します。 GoogleのClosure CompilerでSimpleの最適化を使用してvar y = true;と入力すると、その例がわかります。http://closure-compiler.appspot.com/home

+1

ただし、ダウンロードするには1バイトしかかかりません。ちょうどうまくいったでしょうか?非ゼロであり、我々は皆あなたが真であることをテストしていないことを知っている、あなたは偽でないことをテストする。 – stu

+0

これは興味深いです。ほとんどのJavaScriptの実装では、0と!1を計算せずにtrueとfalseに最適化していますか? – Kekoa

+5

@stu 'return 1;'は 'number'型を返します。誰かが '==='や '!=='の演算子で戻り値を使うと、 '!0'から期待される結果が得られますが、' 1'からは期待されません。 – Paulpro

関連する問題