2011-07-23 5 views
2

通常、||この場合の意味は次のとおりです。||この訴訟の意味ですか?

function getCharCount (e,s) { 
    s = s || ","; 
    return getInnerText(e).split(s).length; 
}  
+0

誰かが明確にしてくださいことができます。sがヌルであれば、カンマとsがヌルか ""でカンマの場合には別のものがアップリンクされていると答えたupvoted回答があります。 –

+2

@バリー:人々は矢印をクリックするのが大好きだからです!コメントと組み合わせたレイノスの答えが最も正しい。賢明な用語は、論理的または論理的ではなく合体型の演算子になります。 – Marc

+0

[(x = x || y)は何を意味するのですか?](http://stackoverflow.com/questions/2802055/what-does-this-construct-xxy-mean) –

答えて

-1

つまり、sがnullの場合は値「、」が割り当てられます。 sがnullでない場合、値は保持されます。

+0

この回答は参考になりました他のものと同じように。不当なdownvotes、おかげでありがとう! –

10

s = s || ","

これは、デフォルトのパラメータの選択肢となっています。 sが「falsey」sだから","

に設定されている場合はsが""undefinedであれば、それは便利なデフォルトを持つことになります。 、それは仕方がJavaScriptでオプションのパラメータを定義すること","

+2

'null'、' 0'、 'false'、' NaN'を列挙した場合、これは完了するでしょう – Marc

+0

@Marc簡潔にするために、私は "falsey"値を列挙しました。関数 – Raynos

+2

通常の使用中_あなたは私と同じjavascriptの開発者を知らない! – Marc

-1

ssある、またはsが定義されていない場合(あなたは、関数呼び出しの引数を渡しませんでした)。

あなたが唯一の1つのparamでこの関数を呼び出すことができます...

+0

であると仮定していました。未定義ではなく、偽の値(未定義、偽、0、 ""、null、...)がコンマ文字列の割り当てをトリガーします。私はdownvoteしなかったが、あなたの答えから何が欠けていたか説明したかった。 – jfriend00

+0

sが定義されていないときにだけステートメントをトリガしたい場合は、次のようにする必要があります。 's = typeof s!=" undefined "? s: '、'; ' – jfriend00

-1

は時々、あなたは変数がそうあなたが値を持っている必要があなたの自己を言っている値 をahveするかどう知りません。

値がない場合(null)、独自のデフォルト値があります。

あなたは

s = s || ","; 

を書いたものsが値を持っているかどうかを私は知らないことが、そう「」値を入れない場合。

0

Raynosが答えを提供しましたが、これを説明するために追加する必要があります。

s = s || ","; 

sは、undefined, null, 0, false, NaN, ""、などなどあらゆるfalsey値であれば...、そしてs","に初期化されます。

これは、オプションのパラメータを関数に初期化したり、パラメータに少なくとも初期値があることを保証するのに非常に役立ちます。このコンストラクトは、パラメータsの誤った値を意図的に渡すことを禁止するため、その使用方法を非常に注意する必要があります。

の値に空の文字列を渡すことはできません。","に変更されるためです。これはこの機能では問題ありませんが、他の機能にはない可能性があります。他のタイプの関数では、許容値であるかもしれないfalseを渡すことはできません。

1しか渡されないパラメータから保護したい場合は、あなたが明示的に未定義のためにテストし、他のfalsey値を渡すことができます。このようなものを使用する必要があります:

s = typeof s != "undefined" ? s : ','; // if s is undefined, initialize 

たりしたい場合はそれが文字列だったことを確認し、空の文字列を許可するには、次のように使用できます。

s = typeof s == "string" ? s : ',';  // if s not a string, initalize 
関連する問題