1

私は本を​​読んで関数を見ましたが、行var numVal = +val;を理解できませんでした。return val + '' === numVal + ''; . 誰かがそれを少し説明するのを助けることができますか? 前もって感謝します!

<!DOCTYPE html>
<html>
<body>
<script>

function isNumeric(val) {
    var numVal = +val;  // what's this for?
    return val + '' === numVal + ''; // what's this for?
}

function filterNumeric(arr) {
    var result = [];

  for(var i=0; i<arr.length; i++) {
    var val  = arr[i];
        if (isNumeric(val)) {
            result.push(val);
        }
  }

  return result;
}


var arr = ["a",1, 2, "b"];

arr = filterNumeric(arr);
alert(arr);


</script>

</body>
</html>
4

4 に答える 4

2

これらは、本質的に型キャスト(強制)を行うJavaScriptのトリックです。

  • はに適用される+val数値単項演算子であり、数値として解釈されるように強制します。それが役に立ったら、英語ではこれを常に「ポジティブ」(絶対値と混同しないでください)を意味すると思います。単項プラスおよびマイナス演算子の重要な使用法は何ですか?も参照してください。。+valval

  • は、2つのオブジェクトと文字列に適用される二val + ''項演算子です。つまり、これは文字列連結演算子です。これにより、文字列として解釈され、空の文字列(何も実行されない)と連結されます。同じことがに行われます。+val''valnumVal

  • これは、値と型===の両方をテストする「厳密に等しい」等式演算子です。これはとして解析されることに注意してください。この場合、常に2つの文字列を比較するため、これは実際には必要ありません。十分でしょう。(val + '') === (numVal + '')==


このコードは、次の擬似コードと同等です。

//var numVal = +val
var numVal = numeric.Parse(val) or NaN;

//return val + '' === numVal + ''
return val.ToString().Equals(numVal.ToString());

いくつかの例を見てください:

val numVal(val +'')(numVal +'')return
-------------------------------------------------- --------
23 23 '23' '23' true
'23' 23 '23' '23' true
'23x' NaN '23x''NaN' false
'ジャンク'NaN'ジャンク''NaN'false
'1E23' 1e + 23 '1E23''1e + 23' false
'1e + 23' 1e + 23 '1e + 23''1e + 23' true
1e + 23 1e + 23 '1e + 23''1e + 23' true

于 2013-02-25T07:57:05.983 に答える
1

コードは実際には:

 return (val + '') === (numVal + '') ; 

A === Bつまり、AはBと厳密に等しく、同じデータ型と値を持ちます。ここvalnumVal2つの整数があり''、それらに加算することにより、結果は文字列に型キャストされます。

このステートメントは、2つの数値文字列を比較し、それらが等しいかどうかに基づいて、trueまたはを返します。false

例えば;

'1' === 1     // false
'1' == 1 // true
1 + ''   === '1'  // true
2 + '' ===  (1+1) + ''   // true
于 2013-02-25T07:56:44.723 に答える
0
 var numVal = +val; 

valが文字列の場合numVal、数値に変換された文字列になります。parseInt()(基数マジックなしの に似ています)

 val + '' === numVal + '';

これは恒等演算子を使用し、===と の文字列値 (空の文字列を追加して作成) が同じかどうかをチェックしvalますnumval。基本的に、numValだった場合NaN、 に評価されfalseます。===ここでは実際には必要ありません==。同じ操作で十分です。

于 2013-02-25T07:58:45.313 に答える
0

+Javascript で多くの意味を持ちます。最初の単項+は数値に対して機能します。2番目と3番目は空の文字列と連結して、数値の文字列表現を取得しています

于 2013-02-25T07:54:48.250 に答える