2

次の質問が非常に単純であることは知っていますが、Google で見つけられなかった特定の状況に関連しています。次のコードは Javascript です。

変数があるとします

x = x + 1;

チュートリアルから、これが機能するはずであることがわかります。しかし、この変数を計算でどのように使用すればよいのでしょうか。

次のコードで試しました

var name = name + 1;
alert(name);

上記の出力は「NaN」です。それが何であれ...

var name = name + 1;
name = 2;
alert(name);

上記の出力 2 は、元の変数を単純にオーバーライドしています。

name = prompt("input any number");
var name = name + 1
alert(name);

上記は、提供された入力 + 1 を文字列として出力します。つまり、入力が引用符なしで「0」の場合は 01 です。

ruby のレッスンで、文字列を整数に変換するために .to_i を使用したことを覚えています。Javascript でこれを行うにはどうすればよいでしょうか。

4

5 に答える 5

3
var name = name + 1;

上記のコードは、以前に含まれていたものに 1 を加えたものを含むという新しい変数を宣言しています。NaN に 1 を加えると NaN になります。namenamename

于 2012-08-20T20:26:43.923 に答える
3

+さまざまな文脈でさまざまなことを意味します。2 つのオペランドが数値の場合、加算が行われます。1 つのオペランドが文字列の場合、文字列連結を行うため、

var x = "2"; // x is the String "2"
alert(x+2); // "22"

var x = 2; // x is the number 2
alert(x+2); // 4

文字列を数値に変換したい場合は、次のことができます

if (x) x = parseInt(x, 10);

ここで、2 番目の引数は基数 (つまり、数体系の基数) であり、それを使用する必要があります。たとえば、誰かが 02 を入力した場合、基数は JavaScript がそれを 8 進数 (またはその他の) 数値として扱うのを防ぎます。

もちろん、変数を使用する前に、変数が定義されていることを常に確認する必要があります。NaN の結果は、定義されていない変数から来ているに違いありません。

于 2012-08-20T20:25:37.083 に答える
2

あなたの問題は、名前を初期化しないことです。例えば:

var name = 0;
alert(name); // Name is 0
name = name + 1;
alert(name); // Name is 1

初期化しないと、 NaN: Not a Number が返されます。

文字列を数値に変換するには、parseIntまたはを使用しparseFloatます。

var name = prompt("input any number"); // I input 3
name = parseFloat(name);
name = name + 1;
alert(name); // Name is 4
于 2012-08-20T20:27:15.767 に答える
1

parseInt文字列を数値に変換するために使用します。

x = x + 1には、「の既存の値を取得しx、それに1を追加して、結果の値を再度保存する」と書かれていxます。

ステートメントの実行時に既存の値がないため、この行var name = name + 1は無意味です。それは、どちらが(Not a Number) であるnameと言っているのと同じです。undefined + 1NaN

+演算子が JavaScriptでどのように機能するかの例を次に示します。

 1  +  2  // number + number is a number -> 3
"1" +  2  // string + anything is a string => "12"
 1  + "2" // anything + string is a string => "12"
"1" + "2" // string + string is a string => "12"
于 2012-08-20T20:26:29.370 に答える
0

NaN は「非数」を意味します。name は最初に宣言された時点では値を持たないため、「var name = name + 1」と言っても数値的な意味はありません。 name は最初に使用されるときに宣言される過程にあるためです。

2 番目の例では、name が文字列であると判断されます。Javascript は、他の言語ほど型に敏感ではないため、連結演算子として数値の代わりに + を使用します。

于 2012-08-20T20:28:59.647 に答える