JavaScript高級プログラム設計第三章の操作符
7224 ワード
ECMAには五つの簡単なデータタイプ(基本データタイプ)があります.Unidefined、Null、Boolean、Number、Stering.各種の基本データタイプに関する操作子:
一元操作子(i++,+i,i–i)は、1つのパケットにデジタル文字を含む文字列を適用すると、それをデジタル値に変換し、1を減算する動作を実行します.文字列変数は数値変数に変わります. は、有効な数字文字を含まない文字列に適用すると、変数の値をNaNに設定し、文字列変数を数値変数にします. は、ブール値falseに適用する場合、まず0に変換してから1を減算する動作を実行する.ブール値が数値変数 になります.は、ブール値trueに適用する場合、まず1に変換してから1を減算する動作を実行します.ブール値が数値変数 になります.は、浮動小数点数に適用する場合、1を減算する動作を実行する. は、オブジェクトに適用する場合、まずオブジェクトのvalueOf()方法を呼び出して、動作可能な値を取得する.この値に対して、前述の規則を適用する.結果がNaNであれば、toString()メソッドを呼び出してから、前述の規則を適用する.オブジェクト変数が数値変数に変わります. 負数のバイナリコードを格納するフォーマットはバイナリ補数であり、1はこの数の絶対値のバイナリコード2を求めます.絶対値のバイナリ逆符号3を求めます.得られたバイナリ逆符号は1を加えます. はビット非(NOT)を押します.ビット非オペレータによって波線(~)で表されています.ビット非を実行した結果、戻り値の反転です. はビットと(AND)を押します.ビットとオペレータは1つの和号文字(&)で表しています.2つのオペレータ数があります. は、ビットまたは(OR)によって表される. はビット別またはビット別に、挿入記号(^^)によって表されます. 左シフト、右シフト、符号なし左シフト、符号なし右シフト
ブール演算子(ブール操作子は全部で三つあります.非、和、または) 論理非は、1つの(!)感嘆符によって表される. 操作数がオブジェクトの場合、falseに戻ります. 操作数が空の文字列であれば、trueを返します.動作数が空でない文字列の場合、false を返します.操作数が数値0の場合、trueに戻り、動作数が任意の非0値(Infinityを含む)の場合、falseに戻ります.操作数がnullの場合、true に戻ります.操作数がNaNであれば、trueに戻ります.動作数がundefinedであれば、true 最初の動作数がオブジェクトであれば、第2の動作数に戻る. 第二の操作数がオブジェクトである場合、第一の操作数の結果がtrueである場合にのみ、そのオブジェクトに戻ります.
乗法演算子(3つの乗法演算子:乗算、除算、および加算)−1.乗算 操作数がすべて数値である場合、通常の乗算計算を行い、数値が範囲外でInfinityまたは-Infinity に戻る.操作数がNaNである場合、結果はNaNである. Infinityと0を掛ければNaNとなります. Infinityと非0の数値が掛け合わされたら、結果はInfinityまたは-Infinity です. InfinityとInfinityを掛ければ、結果はInfinity です.操作数が数値ではない場合は、バックグラウンドでNumber()を呼び出し、これを−2.除算 に変換する.操作数がすべて数値である場合、通常の乗算計算を行い、数値が範囲外でInfinityまたは-Infinity に戻る.操作数がNaNである場合、結果はNaNである.InfinityがInfinityによって取り除かれた場合、NaNとなります. ゼロであれば、結果はNaNである.非ゼロの有限数はゼロによって除かれる.結果はInfinityまたは-Infinityです. Infinityが任意の非ゼロ値で除された場合、結果はInfinityまたは-Infinity 3である. 操作数が全部数値なら、従来の計算 を実行する.除数が無限大である場合、除数は有限値であり、結果はNaNである. 除数が有限値である場合、除数が0であるとNaN となる. InfinityとInfinityが除するとNaNとなります. 除数が有限値である場合、除数は無限大であり、その結果、除数 である.操作数が数値でない場合は、バックグラウンドでNumber()を呼び出して変換する.
加法演算子1.加算 操作数がNaNである場合、結果はNaNである. Infinity加Infinityの場合、結果はInfinityです. -Infinityプラス-Infinityの場合、結果は-Infinityです. Infinityプラス-Infinityであれば、結果はNaNである. +0プラス+0なら、結果は+0です.-0プラス-0なら、結果は-0です.+0プラス-0の場合は+0 となります.二つの操作数が文字列である場合、第二の操作数と第一の操作数をつなぎ合わせる .操作数が一つだけ文字列である場合、もう一つの操作数を文字列に変換して、二つの文字列をつなぎ合わせます. 操作数がオブジェクト、数値、またはブール値である場合、彼らのtoString()メソッドを呼び出して対応する文字列値を取得し、前の文字列ルールを適用する.undefinedとnullについては、それぞれtoString()を呼び出し、undefined、nullを取得する. を使用してください.
2.減算操作数がNaNである場合、結果はNaNである. InfinityマイナスInfinityの場合、NaNとなります. -Infinityマイナス-Infinityの場合、NaNとなります. Infinityマイナス-Infinityであれば、結果はInfinityです. +0マイナス+0なら、結果は+0です.マイナス-0なら、結果は+0です.+0マイナス-0なら+0 です.操作数が文字列、ブール値、nullまたはundefinedである場合、バックグラウンドでNumber()関数を呼び出して数値に変換し、前の規則に従って減算計算を行います.変換の結果がNaNであれば、減算の結果はNaNです. 操作数がオブジェクトである場合、オブジェクトを呼び出すvalueOf()方法は、オブジェクトを表す数値を取得する.NaNがあれば、減算の結果はNaNです.オブジェクトにvalueOf()の方法がない場合は、そのtoString()の方法を呼び出し、得られた文字列を数値に変換する. いずれも数値であれば、数値間で比較する .操作数が文字列である場合、2つの文字列間の対応する文字符号化値 を比較する.一方が数値であれば、他のものを数値に変換して比較する .操作数がオブジェクトである場合、このオブジェクトのvalueOf()を呼び出す方法は、前の規則で比較し、valueOf()がない場合はtoStering() を用いる.オペレータがブール値であれば、まず数値に変換して比較します.
等しいオペレータ(等しいオペレータ)===":まず変換して比較します.全体のオペレータ"==="は変換しないだけです. nullとundefinedは等しい です.等しいものを比較する前にnullとundefinedは任意の値 に変換できません.操作数がNaNである場合、等しいオペレータはfalseに戻り、等しくない操作はtrueに戻る.両方の操作数がNaNであっても、等しいオペレータはfalseに戻ります.NaNはNaN に等しくないからです.もし両方の操作数が対象であれば、彼らが同一のオブジェクトであるかどうかを比較し、同一のオブジェクトを指すならば、等しいオペレータはtrueに戻ります.そうでなければfalseに戻ります.
条件演算子
コンマ演算子は、コンマ操作子を使用して、1つの文で複数の動作を実行することができる .
toStringについて:
一元操作子(i++,+i,i–i)
var s1 = "2";
var s2 = "z";
var b = false;
var f = 1.1;
var o = {
valueOf: function() {
return -1;
}
};
s1++; //value becomes numeric 3
s2++; //value becomes NaN
b++; //value becomes numeric 1
f--; //value becomes 0.10000000000000009
o--; //value becomes numeric ?
ビット var num1=25;
var num2=~num1;
alert (num2); // : 1.
var result= 5 & 3;
alert (result);
var result= 5 | 3;
alert (result);
var result= 5^ 3;
alert (result); //26
ブール演算子(ブール操作子は全部で三つあります.非、和、または)
alert(!false); //true
alert(!"blue"); //false
alert(!0); //true
alert(!NaN); //true
alert(!""); //true
alert(!12345); //false
に戻り、同時に2つの論理非オペレータを使用します.すなわち、Boolean()関数2をシミュレートするのに相当します.論理和(&)乗法演算子(3つの乗法演算子:乗算、除算、および加算)−1.乗算
加法演算子1.加算
var result1 = 5 + 5; //two numbers
alert(result1); //10
var result2 = 5 + "5"; //a number and a string
alert(result2); //"55"
は、一例に注意してください. var num1 = 5;
var num2 = 10;
var message = "The sum of 5 and 10 is " + num1 + num2;
alert(message); //"The sum of 5 and 10 is 510"
は各加算動作が独立して実行され、一文字列で数字を加算し、一文字列を得て、また数字を加えて、得られたのは文字列です.したがって、15を得るためには、適切な括弧 var num1 = 5;
var num2 = 10;
var message = "The sum of 5 and 10 is " + (num1 + num2);
alert(message); //"The sum of 5 and 10 is 15"
2.減算
var result1 = 5 - true; //4 because true is converted to 1 var result2 = NaN - 1; //NaN
var result3 = 5 - 3; //2
var result4 = 5 - ""; //5 because "" is converted to 0
var result5 = 5 - "2"; //3 because "2" is converted to 2
var result6 = 5 - null; //5 because null is converted to 0
リレーション演算子var result="23"
var result="23"<3 //false "23" 23, 3
var result1="a"<3 //false
var result2="a">=3 //false
は、アルファベット「a」が合理的な数値に変換されないので、NaNに変換されますが、NaNが比較されると、動作の結果はfalseに戻ります.等しいオペレータ(等しいオペレータ)===":まず変換して比較します.全体のオペレータ"==="は変換しないだけです.
条件演算子
コンマ演算子は、コンマ操作子を使用して、1つの文で複数の動作を実行することができる
var num1=1,num2=2,num3=3
var num=(5,3,4,2,1,0) // num 0
toStringについて:
/
var array = ["CodePlayer", true, 12, -5];
document.writeln( array.toString() ); // CodePlayer,true,12,-5
//
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
document.writeln( date.toString() ); // Sun Aug 18 2013 23:11:59 GMT+0800 ( )
// 2
var date2 = new Date(1099, 7, 18, 23, 11, 59, 230);
document.writeln( date2.toString() ); // Fri Aug 18 1099 23:11:59 GMT+0800 ( )
//
var num = 15.26540;
document.writeln( num.toString() ); // 15.2654
//
var bool = true;
document.writeln( bool.toString() ); // true
// Object
var obj = {name: " ", age: 18};
document.writeln( obj.toString() ); // [object Object]
// HTML DOM
var eles = document.getElementsByTagName("body");
document.writeln( eles.toString() ); // [object NodeList]
document.writeln( eles[0].toString() ); // [object HTMLBodyElement]
valueOf():valueOfの使い方について