2017-05-15 11 views
-1

value = isNaN(value) ? 0 : value;を削除すると、出力が変更されません。この行の目的は何ですか?このコードの4行目の目的は何ですか

function incrementValue() 
    { 
     var value = parseInt(document.getElementById('number').value, 10); 
     value = isNaN(value) ? 0 : value; 
     value++; 
     document.getElementById('number').value = value; 
    } 
+2

別のライン3と5 ...にしても、必ず[値]があることを確認するために ' Number' - あなたは[isNaN](https://developer.mozilla。org/en/docs/Web/JavaScript/Reference/Global_Objects/isNaN)は? –

+0

行は空の文字列もテストする必要があります: 'value = value ==" "|| isNaN(値)? 0:value; ' – mplungjan

+2

@JaromandaX:' value'は上記のコードでは 'null'になりません。 –

答えて

0

チェックしたパラメータvalueが非数(NaN)である場合。それは確かだ場合

  • は、NaNはそれがそうでなければ、それは同じvalueパラメータを返すことによって、元の値を設定します0

  • にその値を設定します。

<condition>?<truth scenario>:<false scenario> 

はあなたがここで見る形式は、速記のためである:

if (<condition>) { 
     <truth scenario> 
    } else { 
     <false scenario> 
    } 
-1

NaNを意味する: ない数。

この値(NaN)を使用して計算しようとすると、JavaScriptの致命的なエラーが発生するため、これを防ぐためにチェックします。

ところで、この関数を呼び出すたびに「値」を上書きするため、このスクリプトは正しく機能しません。

0

NaNは、無効な数値を表すNot a Numberを表します。無効な番号をnumberフィールドに入力すると(4の代わりにfourと入力した場合)、parseIntで解析すると、NaNの値が返されます。

コードの第4行のvalue = isNaN(value) ? 0 : value;は、そのNaNの値を0に変換するので、算術演算を行うことができます。

0

console.log .its内部で何が起こっているかを表示します。アルファベットの値を入力した場合。 isNaN()は、その値を検証しない場合はNaN入力

function incrementValue() 
 
    { 
 
     var value = parseInt(document.getElementById('number').value, 10); 
 
     console.log(value) 
 
     value = isNaN(value) ? 0 : value; 
 
     value++; 
 
     document.getElementById('number').value = value; 
 
    }
<input id="number" value="sx"> 
 
<button onclick="incrementValue()"">valid</button>

1

の値を返し、入力要素と増加に数値のみを取得するためのフィルタのように見える0として値を返すNaNであります値。

parseIntからNaNが返された場合、検査は基本的にゼロを返します。

論理ORを使用して、偽値を防ぎ、代わりにゼロを使用できます。

function incrementValue() { 
 
    var value = parseInt(document.getElementById('number').value, 10) || 0; 
 
    value++; 
 
    document.getElementById('number').value = value; 
 
}
<input type="text" id="number" onchange="incrementValue()">

関連する問題