最初に気づいたのは、 asm.jsに関するFAQを翻訳し、JavaScript言語のこのサブセットの仕様を読んだときです。
突然、Github のサンプルコード
それから私の目が開き、素晴らしい機会を見ました。
( 3|0 ) === 3; // ( 3.3|0 ) === 3; // ( 3.8|0 ) === 3; // , ( -3.3|0 ) === -3; // ( -3.8|0 ) === -3; // Math.floor(-3.3) == Math.floor(-3.8) == -4 ( "3"|0 ) === 3; // ( "3.8"|0 ) === 3; // ( "-3.8"|0 ) === -3; // ( NaN|0 ) === 0; // NaN ( Infinity|0 ) === 0; // , ( -Infinity|0 ) === 0; // , ( null|0 ) === 0; // null, ( (void 0)|0 ) === 0; // undefined, ( []|0 ) === 0; // , ( [3]|0 ) === 3; // , ( [-3.8]|0 ) === -3; // , ( [" -3.8 "]|0 ) === -3; // , ( [-3.8, 22]|0 ) === 0 // ( {}|0 ) === 0; // ( {'2':'3'}|0 ) === 0; // ( (function(){})|0 ) === 0; // ( (function(){ return 3;})|0 ) === 0; //
そのため、まず、小数部分を破棄する便利な手段があります。
- 負の数に関しては
、「 Math.floor() 」の後に 起こるように、小数が最も近い小さい整数(絶対値の増加)にならず、最も近い小さい整数(値の増加)になるので便利です。 ) 多くの場合、これが必要です。
- 正の数に関しては、
「 | 0 」の構造 が「 Math.floor() 」よりも1 桁以上短いので便利です。 したがって、 4日前に述べたjQueryエントリ「 $() 」以上に開発者を中毒性のあるものにすることができますし、誰も自発的に「 document.getElementsByClassName() 」に切り替えません。 。
次に、さまざまな型を整数に変換する便利な手段があります。
- 整数を選択し(小数の小数部分を破棄)、文字列から(先頭および末尾のスペースを破棄して)抽出し、さらにシングルトン配列からも抽出できます。
- 他のすべてのタイプのデータ(抽出できない)に関連して、このツールは汎用の無効化ツールとして機能します。 多くの場合、これが必要です。
このツールのアクションを観察するには、JavaScriptガーデン (およびJavaScriptガーデン ) で推奨される数値(値の前の
このような比較では、プラス
この手法は、必要に応じてJavaScriptコードで広く使用することをお勧めします。