ECMAScript 5ベースのデータ型+オペレータ

15228 ワード

オペレータ
1.一元オペレータ
  • 自増自減、同C言語
  • 一元プラス、一元マイナス一元プラス、数値の前に置いて、何の操作も行わず、非数値の前に置いて、Number()転換関数と似ています.一元減、数値を負にし、非数値をNumber()してから負にする.
  • //     
                    var a = -10;
                    alert(+a);//-10
                    var b = 'b';
                    alert(+b);//NaN
                    var c = 10;
                    alert(-c);//-10
                    var d = '10';
                    alert(-d);//-10
    

    2.ビットオペレータ
    3.ブール演算子
  • 論理非!まずオペランドをブール値に変換し、逆をとる.2つの論理非を同時に使用すると、Boolean()変換関数に似ています.
  • //    
                  alert(!!'blue');//true
                  alert(!!NaN);//false
    
  • 論理と&&は短絡操作に属する.すべてがブール値の場合、そうでなければ
     //   
                //   und        
                console.log(null && und);//null
                console.log(undefined && und);//undefined
                console.log(NaN && und);//NaN
                console.log(new Object() && true);//true
                console.log(true && new Object());//Object {}
                console.log(new Object() && new Object());//Object {}    
    
  • 論理または|論理と操作は似ている.
    //   
                //    und        
                console.log(new Object() || und);//Object {}
                console.log(false || true);//true
                console.log(new Object() || new Object());//Object {}    
                console.log(null || null);//null
                console.log(NaN || NaN);//NaN
                console.log(undefined || undefined);//undefined
    

  • 4.乗算オペレータ
    数値であれば正常に計算し、オペランドが数値でない場合はバックグラウンドコールで数値に変換し、次のルールを適用します.
    //*
                    console.log(NaN * 1);//NaN
                    console.log(Infinity * 0);//NaN
                    console.log(Infinity * 1);//Infinity
                    console.log(Infinity * Infinity);//Infinity
    ///
                    console.log(NaN / NaN);//NaN
                    console.log(Infinity / Infinity);//NaN
                    console.log(0 / 0);//NaN
                    console.log(1 / 0);//Infinity
                    console.log(Infinity / 1);//Infinity  
    //%
                    console.log(Infinity % 1);//NaN
                    console.log(1 % 0);//NaN
                    console.log(Infinity % Infinity);//NaN
                    console.log(1 % Infinity);//1
                    console.log(0 % 1);//0       0
    

    5.加算オペレータ
    数値であれば加算します.非数値の場合:
    //+
                    console.log(1 + 2);//3
                    console.log(NaN + 1);//NaN
                    console.log(+0 + +0);//+0
                    console.log(-0 + -0);//-0
                    console.log(+0 + -0);//+0
                    console.log(Infinity + Infinity);//Infinity
                    console.log(-Infinity + -Infinity);//-Infinity
                    console.log(+Infinity + -Infinity);//NaN
                    console.log(5 + '5');//'55'
                    console.log('abc' + 'd');//abcd
                    console.log('abc' + new Object());//abc[object Object]
                    console.log('abc' + new Boolean(true));//abctrue
                    console.log('abc' + undefined);//abcundefined
                    console.log('abc' + null);//abcnull
    //-
                    console.log(2 - 1);//1
                    console.log(NaN - 1);//NaN
                    console.log(Infinity - Infinity);//NaN
                    console.log(-Infinity - -Infinity);//NaN
                    console.log(Infinity - -Infinity);//Infinity
                    console.log(-Infinity - Infinity);//-Infinity
                    console.log(+0 - +0);//+0
                    console.log(+0 - -0);//+0    
                    console.log(-0 - -0);//+0
                    console.log('a' - 1);//NaN
                    console.log(new Boolean(true) - 1);//0
                    console.log(null - 1);//-1
                    console.log(undefined - 1);//NaN
    

    6.リレーショナルオペレータ
    まず数値に変換してから比較します.オブジェクトであればvauleOf()メソッドを呼び出し、そうでなければtoString()メソッドを呼び出し、比較します.
      //> < >= <=
                    console.log(3 > 2);//true
                    console.log('b' > 'A');//true           (ASCII )
                    console.log('23' < '3');//true       ,      
                    console.log('a' < 3);//false  'a'    NaN
                    console.log(NaN > 1);//false
    

    7.等しいオペレータ
    ==,===変換オペランドを数値に強制し、比較する.
    //     
                    console.log(null == undefined);//true
                    console.log(null == 0);//false
                    console.log(undefined == 0);//false
                    console.log(NaN == NaN);//false
                    console.log(false == 0);//true
                    console.log('5' == 5);//true
                    console.log(new Object() == 1);//false
                    
                    var obj = new Object();
                    console.log(new Object() == new Object());//false
                    console.log(obj == obj);//true
    

    8.条件オペレータ
    すなわち三元表現
    //     
                    var num1 = 1,num2 = 2;
                    var max = (num1 > num2) ? num1 : num2;
                    console.log(max);//2
    

    9.代入オペレータ

    10.カンマオペレータ
    1つの文で複数の操作を実行できます
                    var num1 = 1, num2 = 2, num3 = 3;
                    var num = (5, 1, 4, 8, 0);
                    console.log(num);//0
    

    データ型
    1.Undefined
    undefined、宣言された変数は初期化されていませんが、まだ定義されていない変数はエラーを報告します.
    //Undefined
      var message;
      alert(message);//'undefined'
      alert(age);//ReferenceError
    

    2.NULL
    nullは、空のオブジェクトポインタ(typeof nullは'object')を返します.定義された変数が将来オブジェクトを保存するために使用される場合はnullに初期化することが望ましいです.undefined値はnullから派生し、比較目的からtypeofがオペランドを変換します.
    //Null
      var car = null;
      alert(typeof car);//'object'
      alert(null == undefined);//true
    

    3.Boolean
    trueとfalseは、大文字と小文字を区別し、すべてのタイプの値をブール値に変換することができます.
    //String
                    console.log(Boolean('abc'));//true
                    console.log(Boolean(''));//false
    //Number
                    console.log(Boolean(1));//true
                    console.log(Boolean(Infinity));//true
                    console.log(Boolean(0));//false
                    console.log(Boolean(NaN));//false
    //Object
                    console.log(Boolean(new Object()));//true
                    console.log(Boolean(null));//false
    //Undefiend
                    console.log(Boolean(undefined));//false
    

    基本包装タイプ拡張:Boolean()は永遠に使用しないほうがいいです.
    4.Number
  • 整数と浮動小数点数、8進数、16進数;
  • //   
                  console.log(1.1);//1.1
                  console.log(1.);//1
                  console.log(.1);//0.1
                  console.log(3.125e7);//31250000
    //        
                  console.log(070);//56
                  console.log(0xA);//10
    
  • 数値範囲;
  • //    
                  console.log(Number.MAX_VALUE);//1.7976931348623157e+308
                  console.log(Number.MIN_VALUE);//5e-324
                  console.log(isFinite(Number.MAX_VALUE + 0.1e+308));//false  :         true
                  console.log(isFinite(NaN));//false
    
  • NaN(Not a Number)は、非数値を表す特殊な数値です.NaNに関する演算は、NaNを返します.NaNは、それ自体を含む任意の値と等しくありません.console.log(NaN == NaN);//false isNaN()は、数値に変換できるパラメータがfalseを返し、NaNと数値に変換できないパラメータがtrueを返します.
  • //isNaN
                    console.log(isNaN('a'));//true
                    //    ,    valueOf() toString()  ;
    
  • 数値変換Number(),parseInt(),parseFloat();
  • //Number
                    console.log(Number('hello world'));//NaN
                    console.log(Number(''));//0
                    console.log(Number('00011'));//11
                    console.log(Number(true));//1
                    //    ,    valueOf() toString()  ;
    //parseInt()
                    console.log(parseInt('a123'));//NaN
                    console.log(parseInt('123a'));//123
                    console.log(parseInt(''));//NaN
                    console.log(parseInt(22.5));//22
                    console.log(parseInt(0xA));//10
                    console.log(parseInt('AF',16));//175
                    console.log(parseInt('10',2));//2
    //parseFloat()
                    console.log(parseFloat('0xA'));//NaN
                    console.log(parseFloat('22.5'));//22.5
    

    基本包装タイプ拡張:Number();toFixed()、toExponential()は、文字列にフォーマットされています.
    //      
                    var num1 = 10.005;
                    var num2 = 10;
                    console.log(num1.toFixed(2));//'10.01'
                    console.log(num2.toFixed(2));//'10.00'
                    console.log(num2.toExponential(1));//'1.0e+1'
    

    5.String
    0または複数の16ビットUnicode文字からなる文字列.ESでは、二重引用符は一重引用符で表される文字列と全く同じである.
  • エスケープ文字改行tタブbチェックアウトrリターンf給紙\スラッシュ'一重引用符"二重引用符xnnunnn
  • //    
                    console.log('1
    2');//1( )2 console.log('\u03a0');//Π( )
  • 文字列の特徴ESで変数が保存する文字列の値の変更は、先に破棄され、その後バックグラウンドで長さを再割り当てし、再定義される.
  • 文字列String()関数呼び出し値のtoString()メソッドに変換され、nullとundefinedの場合、「null」と「undefined」が返されます.
  • //      
                    var num = 10;
                    console.log(num.toString());//'10'
                    console.log(num.toString(2));//'1010'
                    console.log(num.toString(8));//'12'
                    console.log(num.toString(10));//'10'
                    console.log(num.toString(16));//'a'
    

    基本包装タイプ拡張:1.文字メソッド
    //     charAt charCodeAt
                    var str = 'hello world';
                    console.log(str.charAt(1));//e
                    console.log(str.charCodeAt(1));//101
                    console.log(str[1]);//e
    

    2.文字列の操作方法
    //slice,substr,substring       
                    console.log(str.slice(3));//'lo world'
                    console.log(str.substring(3));//'lo world'
                    console.log(str.substr(3));//'lo world'
                    console.log(str.slice(3,7));//'lo w'
                    console.log(str.slice(3,7));//'lo w'
                    console.log(str.substring(3,7));//'lo w'
                    console.log(str.substr(3,7));//'lo worl'
    
                    console.log(str.slice(-3));//'rld'
                    console.log(str.substring(-3));//'hello world'
                    console.log(str.substr(-3));//'rld'
                    console.log(str.slice(3,-4));//'lo w'
                    console.log(str.substring(3,-4));//'hel'  substring(0,3)
                    console.log(str.substr(3,-4));//''  substr(3,0)
    

    3.文字列の位置
    //      
                    console.log(str.indexOf('o'));//4
                    console.log(str.lastIndexOf('o'));//7
                    console.log(str.indexOf('o',6));//7
                    console.log(str.lastIndexOf('o',6));//4
    

    4.trim()
    //trim()
                    var str3 = '   hello world   ';
                    console.log(str3.trim());//hello world
    

    5.大文字と小文字の変換
    //     
                    var str4 = 'HELLO world';
                    console.log(str4.toUpperCase());//'HELLO WORLD'
                    console.log(str4.toLocaleUpperCase());//'HELLO WORLD'        (   )
                    console.log(str4.toLowerCase());//'hello world'
                    console.log(str4.toLocaleLowerCase());//'hello world'
    

    6.文字列のパターンマッチング
    //        
                    var text = 'cat,bat,sat,fat';
                    var pattern = /.at/;
                    console.log(text.match(pattern)[0]);//'cat' match      
                    console.log(text.search(/at/));
                    console.log(text.replace('at','ond'));//'cond,bat,sat,fat'
                    console.log(text.replace(/at/g,'ond'));//'cond,bond,sond,fond'
                    //       $n    n         ?
                    console.log(text.replace(/(.at)/g,'word($1)'));//'word(cat),word(bat),word(sat),word(fat)'
                    //replace             
                    var text2 = '

    hello world

    '; console.log(text2.replace(/[<>"&]/g,function(match,pos,originalText){ switch(match) { case '' : return '>'; case '&' : return '&'; case '\"' : return '"'; } })); //

    hello world

    //split() var color = 'red,blue,green,yellow'; console.log(color.split(','));//["red", "blue", "green", "yellow"] console.log(color.split(',',2));//["red", "blue"] console.log(color.split(/[^\,]+/));//["", ",", ",", ",", ""] :

    7.localeCompare()
    //localeCompare()                
                    var str5 = 'yellow';
                    console.log(str5.localeCompare('brick'));//1
                    console.log(str5.localeCompare('yellow'));//0
                    console.log(str5.localeCompare('zoo'));//-1
    

    8.fromCharCode()
    //fromCharCode() String          ,        
                    console.log(String.fromCharCode(104,101,108,108,111));//'hello'
    

    9.HTMLメソッドはなるべく使わない
    6.Object
    ECMA-262は、オブジェクト(object)を「属性の無秩序な集合」と定義し、各属性に元の値、オブジェクト、または関数を格納する.
    ObjectはECMAScript内のすべてのオブジェクトの基礎であり、参照タイプであり、参照タイプはオブジェクト定義(クラス)である.
                    var obj = new Object();
                    console.log(obj.constructor);//    
                    console.log(obj.hasOwnProperty(propertyName));//            
                    console.log(obj.isPrototypeOf(object));//                
                    console.log(obj.propertyIsEnumerable(propertyName));//         
                    console.log(obj.toLocaleString());//
                    console.log(obj.toString());//
                    console.log(obj.valueOf());//
    
                   //    
                    function NewObj () {
                        this.name = 'newObj';
                    }
    
                    var newObj = new NewObj();
                    console.log(newObj);//NewObj {name: "newObj"}
                    console.log(NewObj);//function NewObj() {this.name = 'newObj';}
                    console.log(newObj.constructor);//function NewObj() {this.name = 'newObj';}
                    console.log(newObj.hasOwnProperty('name'));//true
                    console.log(NewObj.prototype);//Object {constructor: function}
                    console.log(NewObj.prototype.isPrototypeOf(newObj));//true
                    console.log(newObj.prototype);//undefined
                    console.log(newObj.__proto__);//Object {constructor: function}