2016-12-14 7 views
-1

私はこのような機能を持っています。割り当てられた変数タイプが数値なのはなぜですか?

var myfuncsettings; 
var myfunc = function(settings) { 
    myfuncsettings = settings | {}; 
    myfuncsettings['prop'] = 'test'; 
}; 

エラーが発生しました。

Uncaught TypeError: Cannot create property 'message' on number '0'(…) 

私は慰めました。

var myfuncsettings; 
var myfunc = function(settings) { 
    console.log('typeof settings: ' + (typeof settings)); 
    myfuncsettings = settings | {}; 
    console.log('typeof myfuncsettings: ' + (typeof myfuncsettings)); 
    myfuncsettings['message'] = 'test'; 
}; 

そして、私は得ました。

typeof settings: object 
typeof myfuncsettings: number 

誰でも教えてください。何が間違っていますか?

+1

短絡評価のセクションを参照してください。しかし、この質問は閉鎖に値するものではありません。 –

+2

私はこれが「誤植」とはみなされません。 1本のパイプは完全に有効ですが、OPが望むものとはまったく異なるものです。 – musefan

+1

私はdownvotesを理解していません。あなたはあなたの問題をとてもうまく説明しました – musefan

答えて

3

パイプラインオペレータの誤った使用が検出されました。あなたはあなたの要件のためにそれを以下のように使用する必要があります。

myfuncsettings = settings || {}; 

あなたが|を使用している場合、それはオペランドの間にビット単位のOR演算を行います。

+1

@PraveenKumar私はそれについてコメントしていました。 :)とにかくここでルールを守りましょう。 –

関連する問題