ECMAScript 5ベースのデータ型+オペレータ
15228 ワード
オペレータ
1.一元オペレータ自増自減、同C言語 一元プラス、一元マイナス一元プラス、数値の前に置いて、何の操作も行わず、非数値の前に置いて、Number()転換関数と似ています.一元減、数値を負にし、非数値をNumber()してから負にする.
2.ビットオペレータ
3.ブール演算子論理非!まずオペランドをブール値に変換し、逆をとる.2つの論理非を同時に使用すると、Boolean()変換関数に似ています. 論理と&&は短絡操作に属する.すべてがブール値の場合、そうでなければ 論理または|論理と操作は似ている.
4.乗算オペレータ
数値であれば正常に計算し、オペランドが数値でない場合はバックグラウンドコールで数値に変換し、次のルールを適用します.
5.加算オペレータ
数値であれば加算します.非数値の場合:
6.リレーショナルオペレータ
まず数値に変換してから比較します.オブジェクトであればvauleOf()メソッドを呼び出し、そうでなければtoString()メソッドを呼び出し、比較します.
7.等しいオペレータ
==,===変換オペランドを数値に強制し、比較する.
8.条件オペレータ
すなわち三元表現
9.代入オペレータ
略
10.カンマオペレータ
1つの文で複数の操作を実行できます
データ型
1.Undefined
undefined、宣言された変数は初期化されていませんが、まだ定義されていない変数はエラーを報告します.
2.NULL
nullは、空のオブジェクトポインタ(typeof nullは'object')を返します.定義された変数が将来オブジェクトを保存するために使用される場合はnullに初期化することが望ましいです.undefined値はnullから派生し、比較目的からtypeofがオペランドを変換します.
3.Boolean
trueとfalseは、大文字と小文字を区別し、すべてのタイプの値をブール値に変換することができます.
基本包装タイプ拡張:Boolean()は永遠に使用しないほうがいいです.
4.Number整数と浮動小数点数、8進数、16進数; 数値範囲; NaN(Not a Number)は、非数値を表す特殊な数値です.NaNに関する演算は、NaNを返します.NaNは、それ自体を含む任意の値と等しくありません. 数値変換Number(),parseInt(),parseFloat();
基本包装タイプ拡張:Number();toFixed()、toExponential()は、文字列にフォーマットされています.
5.String
0または複数の16ビットUnicode文字からなる文字列.ESでは、二重引用符は一重引用符で表される文字列と全く同じである.エスケープ文字改行tタブbチェックアウトrリターンf給紙\スラッシュ'一重引用符"二重引用符xnnunnn 文字列の特徴ESで変数が保存する文字列の値の変更は、先に破棄され、その後バックグラウンドで長さを再割り当てし、再定義される. 文字列String()関数呼び出し値のtoString()メソッドに変換され、nullとundefinedの場合、「null」と「undefined」が返されます.
基本包装タイプ拡張:1.文字メソッド
2.文字列の操作方法
3.文字列の位置
4.trim()
5.大文字と小文字の変換
6.文字列のパターンマッチング
7.localeCompare()
8.fromCharCode()
9.HTMLメソッドはなるべく使わない
6.Object
ECMA-262は、オブジェクト(object)を「属性の無秩序な集合」と定義し、各属性に元の値、オブジェクト、または関数を格納する.
ObjectはECMAScript内のすべてのオブジェクトの基礎であり、参照タイプであり、参照タイプはオブジェクト定義(クラス)である.
1.一元オペレータ
//
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.ブール演算子
//
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
//
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
console.log(NaN == NaN);//false
isNaN()は、数値に変換できるパラメータがfalseを返し、NaNと数値に変換できないパラメータがtrueを返します.//isNaN
console.log(isNaN('a'));//true
// , valueOf() toString() ;
//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では、二重引用符は一重引用符で表される文字列と全く同じである.
//
console.log('1
2');//1( )2
console.log('\u03a0');//Π( )
//
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}