JavaScript基本データ型の注意点

3379 ワード

1.関数で変数を定義します.通常、varオペレータ定義を使用すると、変数の役割ドメインがローカル変数に属し、関数が終了すると破棄されます.たとえば、次のように定義されたvar message='hi'です.
function test(){
    var message = 'hi';
}
test();
alert(message); //error!

ここでの変数はvar定義を使用し、関数を離れるとその変数が破棄され、破棄されないようにするにはvarを削除すると、その変数はグローバル変数になり、関数呼び出しが完了するとその変数は存在するが、これは推奨されず、グローバル空間を汚染する.
2.Numberタイプの浮動小数点数
var floatNum1 = 1.; //         ----   1
var floatNum2 = 10.0; //  ----   10

浮動小数点数を保存するために必要なメモリは整数値の2倍であるため、浮動小数点数自体が1.0などの整数を表す場合、この値は整数に変換されます.
浮動小数点数の最高精度は17桁の小数であることは知られているが,計算時の精度は整数にはるかに及ばず,例えば0.1+0.3は0.3ではなく0.30000000004である.次のようになります.
if(a + b == 0.3) {
    alert('You got 0.3');
}

これは正しくありません.0.3で等しくありませんが、この2つの数が0.05および0.25または0.15および0.15であれば問題はありません.したがって、特定の浮動小数点数値は決してテストしないでください.
3.数値変換におけるparseInt()関数
var num1 = parseInt('1234blue'); //1234
var num2 = parseInt(''); //NaN
var num3 = parseInt('0xA'); //10 (    )
var num4 = parseInt(22.5); //22
var num5 = parseInt('070'); //56 (   )
var num6 = parseInt('70'); //70 (   )
var num7 = parseInt('0xf'); //15 (    )

8進数文字数の文字列をparseInt()を使用して解析する場合、ECMAScript 3とECMAScript 5には、例のvar num 5=parseInt(‘070’);ECMAScript 3は56(8進)と考えられ、ECMAScript 5は70(10進)と考えられています.上記の誤導を解消するために、この関数に2番目のパラメータを追加できます.変換時に使用される基数(つまり、何進)です.たとえば、
var num = parseInt('AF', 16); //175
var num1 = parseInt('AF'); //NaN

16進数に変換し、2番目のパラメータを付けないとNaNが出ます.