タイプについて


ecma-622仕様は、JavaScriptのタイプについて説明しています.
  • はトップクラスの属性が定義されておらず、未定義の値が保存されている.一つの値だけundefined(キーワード)も元の値です.
  • 空の値は特別なキーワードで、空の値を表します.一つの値だけnullも元の値です.
  • ブール値は、trueとfalse
  • という2つの値があります.
  • 文字列タイプは、すべての限られたゼロまたは16ビットの符号なし整数値(「要素」)の順序付けシーケンスであり、空の文字列長はゼロであり、非負の数値でこれらの位置をインデックスしている.最初の要素は位置0であり、次の要素は位置1であり、このように類推する.
  • 数値タイプは、IEEE-704の64ビットの二重精度の数値フォーマットを採用しています.この特別な値NaN:算術式が非数値値に戻る特殊な値を表しています.NaNはいかなる値にも等しくなく、その自身を含みます.+Infinity:正無限+0:正ゼロです.これは、ダブル精度の数値フォーマットによる-0:負のゼロです.これは、二重精度の数値フォーマットによる
  • です.
  • オブジェクトは、並べ替えられていない属性コンテナである.各属性は名前と値と特徴のセットから構成されています.
  • 参照内部参照タイプは言語のデータタイプではありません.参照値は表式の参照値の中間値にのみ使用され、オブジェクトの属性に参照がオブジェクトの属性に格納されない参照です.
  • リストの内部のリストタイプは言語のデータタイプではありません.リストの値は表式の値を求める中間値だけに使用され、オブジェクトの属性記憶リストタイプによってパラメータリストの値を説明するために使用されません.リストクラスの値は単純な順序付け値のシーケンス
  • です.
  • 終了内部終了タイプは言語のデータタイプではない.終了値は、表式の評価値の中間値にのみ使用され、オブジェクトの属性格納完了タイプには使用されない.非局所制御スケジュールのステートメントを説明するための挙動
  • .
    mozilla.orgサイトを使ってJavaScriptのタイプについて説明すると、より分かりやすくなります.
    値の種類:指定されていない空値のブール値文字列の値を含む
    非値型:もちろん値の種類を除いてすべて非値のタイプですが、ecma-622規範の定義方法については、6-9の定義はあまり馴染みがないように見えます.私達はよく知らない方法で明確な非値のリストを作成します.
  • 共通オブジェクトObject
  • 配列Aray
  • 関数Function
  • 日付と時間Date
  • 数学ライブラリMath
  • 正規表現RegExp
  • ecma-622仕様の定義方法に対応すれば、これらはすべて対象(6,Objectという単語が2回使われていますが、認識上の混乱を引き起こすのではないでしょうか?)に属しています.そして、Date、Math、RegExpはライブラリのようです.つまり、私達が直接使用するライブラリの対象です.
    値の種類と非値型の典型的な違いは、
  • は変数を定義し、右側の値をコピーし、JavaScriptエンジンは変数に新しいメモリ空間を割り当て、右側の値をコピーします.非値型は変数に参照して変数の値を割り付けます.対象となります.次の説明は対象に対して行います.つまり定義変数とは対象を定義して対象を指すことです.値の種類はJavaScriptの内部実装が「引用」かどうかは、もう関心がないです.私たちが使う立場では引用ではありません.
  • はオブジェクトを変更し、このオブジェクトが値タイプであれば、このオブジェクトの値は変更され、他のオブジェクトの値は非値型に影響されない場合、このオブジェクトの値は変更され、他のオブジェクトの値は影響を受けない.
  • 値タイプに新たな可変オブジェクト(メンバ)を付与できません.例えば、可変
    var str='string';
    str.foo='new string';//         
    と申します. それでもだめです.
    String.prototype.foo='newstring';
    var str='string';
    alert(str.foo);//  newstring
    str.foo='foo';
    alert(str.foo);//    newstring,IE,FireFox   
    
    String.prototype.foo=function(){return 'newstring';};
    var str='string';
    alert(str.foo());//  newstring
    str.foo=function(){return 'newfoo';};
    alert(str.foo());//    newstring,IE,FireFox   
    
     
  • は、オブジェクト(メンバー)を変更します.このオブジェクトが有効ではない場合、前の第3の点が非値型であるため、このオブジェクトと同じ参照対象のこのメンバー値が全て変更されます. 
  • function:ファーストクラスの公民(first-clast)、functionに注意します!Function
    これらの概念を説明すると、早口になりますが、前にFunctionと言ったのはタイプです.Functionはキーワードです.Functionというタイプのオブジェクトを定義できます.Functionはタイプです.もちろんオブジェクトを定義することはできません.
    var o1={m1:3,m2:{m22:4}};
    var o2=o1;
    o2.m1=4;
    o2.m2=4;
    alert(o1.m1);//4
    alert(o1.m2);//4
    var o1={m1:3,m2:{m22:4}};
    var o2=o1;
    o1.m1=4;
    o1.m2=4;
    alert(o2.m1);//4
    alert(o2.m2);//4
    Functionで構成されていますかはい、
    function func(){}//    Function     func
    Function func(){}//     
    func=new Function;//      func,    Function   
    FunctionはJavaScript内の関数です.この関数はコンストラクションタイプのオブジェクトを構築できます.
    ここの語彙Functionには複数の意味があります.
  • は、オブジェクトについて説明する際に、このオブジェクトのタイプが関数
  • である.
  • はJavaScript内のオブジェクトで、関数タイプのオブジェクトを構築できます.このタイプは関数
  • です.
    皆さんはnewキーワードは新しい対象を作ると言っていますか?前にnewがあるじゃないですか?
    alert(typeof Function);//function
     元々は関数だけでオブジェクトを構築できますが、もちろんJavaScriptを便利に書くために他の便利な定義方法も提供しています.
    //  new   
    var func=Function();
    var func=Function('return 1;');
    alert(func());//1
     同じように、Aray、Date、RegExpは、JavaScript内の関数です.Mathは関数ではなく、数学関数のセットです.