2016-04-28 13 views
-2

javascriptの数値関数は、掛け算、除算、剰余を見つけるのに使用できますが、減算や加算には使用できません。JavaScriptの数値の振る舞いを説明してください

//I used theNumber = 3 
var theNumber = Number (prompt (" Pick a number " , "")) ; 
alert (" difference " + theNumber - theNumber) ; 
// Difference is NaN, why not 0? 

var theNumber = Number (prompt (" Pick a number " , "")) ; 
alert (" sum " + theNumber + theNumber) ; 
// ->33 

なぜ連結が発生していますか?なぜ6ではない? 助けてください!

alert (" sum " + theNumber + theNumber) ; 
-> "string" + Number + Number = "StringNumberNumber" 

ストリング後+は、以降この点から連結なく数値加算演算子として扱われる:それは文字列で始まるので

+0

'alert(" sum "+(theNumber + theNumber));' – jcubic

+0

'+'はjavascriptで文字列を連結するために使用されます。 @jcubicのように:paranthesisを使用し、合計を計算します。 – DenseCrab

+0

'alert'の代わりに' console.log( 'difference'、theNumber-theNumber) 'を使用して結果を記録することができます。これはあなたのオブジェクトを文字列にマッピングする必要はなく、これらの混乱を防ぐことができます。 – michel404

答えて

2

連結が生じています。あなたはこれを避けたい場合は、括弧内にあなたの追加をラップすることができます

alert (" sum " + (theNumber + theNumber)) ; 
-> "String" + (Number + Number) = "StringEvaluatedParenthesis" 
0

Javascriptが厳密に型指定された言語ではなく、数3は、それがキャストされるので、それは、文字列で始まるときの鋳造を実行する必要があるため出力はその連結です。括弧(theNumber - theNumber)を追加すると、それらの2つを数値として扱いますが、結果を文字列にキャストして出力を生成します。

いくつかの例:

var stringValue = "1000"; 

これは数

var numericValue = +stringValue; 

に文字列をキャストし、これが再び文字列

var stringAgain = "" + numericValue ; 
0

を行います私は単項プラス演算子を使用しますそれらを最初に番号に変換する。 JavaScriptで

+num1 + +num2; 
+1

彼は 'Number()'を使用しました。 – mplungjan

+0

は既に数値です。それは 'Number()' -functionがするものです – Thomas

2

強制

変数は競合型でオン操作された場合、次に、インタプリタは、暗黙的(強制変換)変数の型と動作を変更します。

演算子優先順位と結合

操作(...)は、このソースによればlink

に応じて起こる、それは操作が左から右に実行する手段右連想、左を有しています。

So(5 + 4 + 6);以下のように分解される。

  1. 5 + 4 // 9
  2. 9 + 6 // 15を返し。

回答

あなたの質問は、あなたが上記の二つのトピックに関する知識を持っている必要があります。 Now、

var theNumber = Number (prompt (" Pick a number " , "")) ; 
alert (" difference " + theNumber - theNumber) ; 

違いNaNなぜ0ではないのですか?

あなたは新しいJSの力を適用し、どのように(...)仕事ができるか考えてください。

Number = 3と仮定します。

  1. "差" +(文字列へのtheNumberを強制する)のtheNumber = "差分3"
  2. "差分3" - のtheNumber = NaNに、

string + stringはJSでは連結の形で有効ですが、 ' - '演算子は文字列には適用されないため、 "差3"をNaNを返す数値に変換し直します。

console.log(NaN - 5); 

ファンFACT:はconsole.log(NaNに - のNaN)。 //またNaNです!


var theNumber = Number (prompt (" Pick a number " , "")) ; 
alert (" sum " + theNumber + theNumber) ;// ->3// ->33 

この時間:

  1. "和" +のtheNumber = "合計3"
  2. "合計3" +のtheNumber = "合計33"
+0

あなたが先に呼び出すものは実際に結合性です。 – Mifeet

0

この主にオペレータの優先順位によるものです。

-+あなたはどちらか続ける* or /場合、それは正常に動作した場合のように、彼らは高い優先度を持っているので、

java scriptで算術演算子はoperandsに基づいて実行されている連結である理由これは、彼らは右から左順に実行して同じ優先順位を持っています実行されます。

ので、あなたが...だから

を彼らは高いprecendenseを得る()ブラケットISIDE算術の操作を囲み、NEX最初とを実行した場合、詳細はこの

alert("diference " + (theNumber-theNumber)) 

クリックhereのように試してみてください

+3

_ "' 'は' + '" _よりも優先順位が低く、_same_優先順位はありません。 '-'が低い場合、' 3 - 2 + 5'は '-4'になりますが、' 6'です。 –

+0

@JamesThorpeあなたが正しいです – Ankanna

関連する問題