Javascript学習ノート(三)基本概念

3089 ワード

本稿では、「Javascript高級プログラム設計(第三版)」の第三章基本概念におけるECMAScript(以下、ESと略称する)言語の核心をまとめます.
ES推奨識別子の名前は、ラクダピーク式を採用しています.
ES第5版は厳格なモードを導入しています.厳格なモードはJSファイルのトップまたは関数内部の最初の行に「use strict」を追加する必要があります.厳格なモードでは、多くのJSで不確定または不安全な操作がエラーとなります.
ES中の変数はvarと変数名来で宣言し、デフォルトではundefinedを与えます.変数を宣言しながらvarキーを使わないと、その変数はグローバル変数として作成されます.ESの変数はフリータイプで、任意の種類の値を保存できます.
ESにはデータの種類が二つあります.一つは簡単なデータの種類で、一つは複雑なデータの種類です.簡単なデータタイプは5種類の基本タイプがあります.Number、Boolean、String、Null、Udefined.複雑なタイプは一つです.Object.つの変数がどのタイプかを判断します.typeof nullはobjectに戻ります.nullはオブジェクトの空のポインタを表していますので、注意してください.まだ定義されていない変数を使うとエラーが発生しますが、まだ定義されていない変数名を指定するとエラーが発生しません.undefinedに戻ります.また、undefinedはnull値から派生していますので、null==undefinedはtrueに戻ります.
Booleanタイプに対しては、強制変換関数Boolean()が多く使われています.下には様々なデータタイプの変換関係をまとめたテーブルがあります.
Boolean関数変換
データの種類
trueの値に変換
falseの値に変換
ボロア
true
false
String
空の文字列ではない
「」
Number
ゼロ以外の数値は無限大を含む.
0とNaN
Object
任意のオブジェクト
null
Udefined
適用されません
undefined
Numberのタイプについては、ここで整数を小数に変換する方法と小数をまとめます.
//      



var num = 4.721;

Math.floor(num);//    ,4

Math.ceil(num);//    ,5

Math.round(num);//    ,5

Math.round(num*10)/10;//      4.7

Math.round(num*100)/100;//      4.72

parseInt(num);//        ,4



//     

var num = 4;

num.toFixed(2);//      ,           "4.00"
また、Numberタイプには特殊な値NaN(Not a number)があり、ESの任意の数値を0で割るとエラーが発生せず、NaN値に戻ります.NaNには多くの特性があり、判定値に戻らない数学的操作は一般的にNaN値に戻ります.NaNはどの値に対しても、自分を含めて、サイズを比べるとfalseに戻ります.ESでは、一つの値がNaNであるかどうかを判断するためにisNaN()の関数を定義しています.呼び出し前に、この関数はまず、着信値を数値に変換することを試みます.
Numberの強制変換については、3つの関数があります.Number()、パーrseInt()とパーrseFloat()です.Number()関数にはいくつかの注意すべき転化があります.まずNumber値は10進数の数字を返し、Number(null)は0に戻り、Number(undefined)はNaNに戻り、Number(")は0に戻ります.parseInt()関数は、変換する進数を指定できます.また、次のような場合に注意したいのです.パーrseInt(""")はNaNに戻り、パーrseInt("1234 blue")は1234に戻ります.ParseFloat()についても、第二の小数点を無視するような注意が必要であり、また、進数を認識しないので、ParseFloat(「0 xA」)は0に戻る.
ブール操作については、まず正しいです.オペレータ、nullNaN、undefinedは全部trueに戻ります.& および𞓜𞓜操作子に対して、短絡動作が行われる.すなわち、最初の操作数が最終的な結果を決定することができれば、第二の操作数は演算されない.
等数演算子については、演算子の両方に数字があれば、両方を数値に変換して比較します.しかし、この中には特殊な事情があります.それはイコールの場合、nullとundefinedはどの値にも変換できないので、null=0はfalseに戻ります.
ステートメントについては、switch文をまとめます.この文はフル操作で実行されています.比較するとタイプ変換は行われません.
関数については、まず再負荷がなく、次に関数のパラメータリストが必要ではないが、関数の内部には、着信パラメータを維持するためのargments配列があるので、argmentsは着信パラメータとのみ関係があり、定義されたパラメータリストには関係がない.