一元操作子「+」、「-」の強制変換値


インクリメントと逓減はそれぞれ前置型と後置型がありますが、ここでは区別しません.
下のコードは全部後置型のインクリメントです.
var str = "z";
console.log(str++)      //NaN
console.log(typeof str)     //number
var str = "123abc";
console.log(str++)      //NaN
console.log(typeof str)     //number
var str = "123";
console.log(str++)      //123
console.log(typeof str)     //number
上の3つのコードはそれぞれ3つの文字列に対応しています.
  • 有効数字文字を含まない文字列
  • 数字と他の文字を組み合わせた文字列は、有効な数字文字列ではなく、1の
  • に属しています.
  • は、有効な数字文字の文字列
  • を含む.
    一元操作子「+」、「-」は上のこれらの文字列に対して、次のような規則があります.
    1.有効な数字文字を含む文字列に適用する場合は、まず数値に変換してから1を減算します.文字列変数は数値変数に変わります.
    2.有効な数字文字を含まない文字列に適用すると、変数の値をNaNに設定します.文字列変数は数値変数に変わります.
    NaNは特別なNumberタイプです.
    注意:
    NaN instanceof Number  //false
    基本タイプは、Numberコンストラクタの実例となるオブジェクトではないので、このようにタイプを検出することができません.