0

今日私は理解できなかったいくつかのJSを横断していましたが、ビット単位の操作では本当に私を助けてくれません。誰かが以下を説明できますか?コーディング説明:JavaScriptでビット単位のOR文字で設定された変数

 function createExcerpt(string, maxLength) { 
      // Set a default value of maxLength of 110 
      maxLength = maxLength | 110; 
      ... 

パイプ文字はビットORですが、私は上記で何が起こっているのかは分かりませんが、 もっと多くの機能をポストする必要がある場合は、私に知らせてください。

+1

通常デフォルト引数は論理和( '||')で行われます:あなたはあなたに利用ES6を持っていると仮定し

そしてより良い方法、関数呼び出しに直接焼きデフォルト引数を使用することです...そのコメントを与えて、間違いのように見える。ビット単位のORは、デフォルト値を設定しません。 – qxz

+0

(デフォルトのargsには '||'を使用していますが[http://www.codereadability.com/javascript-default-parameters-with-or--あなたがそれを見た頻度にかかわらず) – qxz

答えて

2

前の行にコメントがあると、これは単純な誤植のようです。 maxLengthがされている場合ただし、これは、以来、実際に悪い考えである

maxLength = maxLength || 110; 

:デフォルトの

設定は、一般的にor論理演算子、||で行われることになるので、それはほぼ確実であることを意味しています(0のような)偽の値に設定すると、デフォルトに置き換えられます。それはかもしれませんあなたが欲しいものになることは決して明らかです。

私はおそらく少しより詳細な間違いなく明確を選ぶでしょう:

if (maxLength === undefined) { maxLength = 110; } 

それはまだ1行に収まると意図は非常に具体的です。

function createExcerpt(string, maxLength = 110) { 
    ... 
} 
2

これは間違いです。論理和(||)は、ヌル合体演算子として使用されます。ビット単位のOR演算は、コメントに示された効果を持たない。いくつかのテストでそれを実行して、自分でテストすることができます。

110 | 110 = 110 
120 | 110 = 126 
90 | 110 = 126 
null | 110 = 110 
50 | 110 = 126 
200 | 110 = 238 

あなたは結果が「MAXLENGTH」引数を渡す誰かにかなり直感的になることをほんの一例から見ることができます。

関連する問題