10

私は何年にもわたって JS をプログラミングしてきましたが、何かを行うための新しいショートカットをまだ見つけています。私が知らないことがもっとあるのだろうかと思っています。

私が知っているショートカットは次のとおりです。

編集: 一般的にはこのようなことを行うべきではないことに同意します。また、より広範でないものとして説明するより良い方法がある可能性があることに同意しますが、私ができる最善の方法は、例を挙げて説明することです.


これの代わりに

if("foobar".indexOf("foo") > -1) 

これを行う

if(~"foobar".indexOf("foo"))

これの代わりに

var foo = Math.floor(2.333)

これを行う

var foo = ~~2.333

これの代わりに

var foo = parseFloat("12.4")
var bar = parseInt("12", 10)

これを行います(これの大ファンではありません)

var foo = +"12.4"
var bar = +"12"

これの代わりに

if(isNaN(foo)

これを行う

if(foo != foo)

これの代わりに

(function(){ ... })()

これを行う

!function(){ ... }()

接頭辞を付けて、何でもブール値に変換します!!

var isFoo = !!foo

以上、私の同僚にしてはいけないことのリストです。

ここに他に何か追加できますか?

4

3 に答える 3

15

この質問はおそらく広すぎるためクローズされ、この回答は直接回答しないために反対票のかなりの部分を獲得する可能性がありますが、ここに行きます.

お願いお願い、プログラミング言語で「ショートカット」を使用することについては本当に慎重になってください

これらのショートカットのほとんどは、キーストロークの明瞭さと明示性を犠牲にしています。それが賢明なトレードオフであることに同意する、有能でプロのコーダーを1人も見つけることはできません。

検討

if("foobar".indexOf("foo") > -1)

if(~"foobar".indexOf("foo"))

あなたは 4 人のキャラクターを保存しました... うーん!ただし、このショートカットを知らない人がここで何が起こっているのかを理解できる可能性は非常に低いことも保証しています...そして確かに簡単ではありません.

indexOf明示的なバージョンを理解するには、 の定義を読むだけで十分です。2 番目の演算子については、意味を理解する必要があります~(これは JS ではかなり珍しい演算子です)。次に、-1 のビットごとの補数が何であるかを知る必要があります。それが真実であることを認識する必要があります。

これはばかげたトレードオフであり、これらのイディオムの多くの特徴です。

しないでください。これは80年代ではない。

于 2013-08-04T02:26:33.963 に答える
4
  • n | 0フロアn(n符号付き 32 ビット整数の範囲内にある場合のみ)。Math.floor()最後にチェックしたほとんどのブラウザーよりも高速です。
  • undefined == nullですが、どちらも と等しくありませんfalse
  • の代わりにx == 'a' || x == 'b' || x == 'c'、次のことができます['a', 'b', 'c'].indexOf(x) !== -1

私が生産コードで見た唯一の本当に短いショートカットは、+文字列を数値に変換する単項です。

于 2013-08-04T02:25:57.867 に答える