《JavaScript教程》03章 运算符


JavaScript的运算符与Java基本相同,因为是Script,在数据类型的限制方面要松散的多。

赋值、加减乘除、余除
“=、+、-、*、/、%”分别代表“赋值、加减乘除、余除”
xx = 3 + 2;     // xx的值为  5
xx = 3 - 2;     // xx的值为: 1
xx = 3 * 2;     // xx的值为: 6
xx = 3 / 2;     // xx的值为: 1.5
xx = 3 % 2;     // xx的值为: 1

增1减1
“++a、a++、--a、a--”分别代表“前增1、后增1、前减1、后减1”
a = 5; b = a++; // a的值为: 6、b的值为: 5
a = 5; b = ++a; // a的值为: 6、b的值为: 6
a = 5; b = a--; // a的值为: 4、b的值为: 5
a = 5; b = --a; // a的值为: 4、b的值为: 4

字符串运算
作为运算符只有“+”来连接2个字符串,至于查找、截取等功能要用字符串类的各种方法实现。注意:字符串与其它类型相加时,其它类型将被自动转换为字符串类型,再相加。
xx = "abcd" + "xyz"     //xx的值为: "abcdxyz"
xx = "1234" + 56        //xx的值为: "123456"
var dd = new Date(1999, 11, 31);
xx = "今天是=" + dd     //xx的值为: "今天是=Fri Dec 31 00:00:00 UTC+0900 1999"

逻辑运算符
“&&、||、!”分别表示“与、或、非”
if ((1 <= mon) && (mon <= 12)) {
    alert("xx is between 1 and 12.");
}
if ((xx == "ABC") || (xx == "abc")) {
    alert("xx is ABC.");
}
if (!(xx == 5)) {
    alert("xx is not five.");
}

位运算符
“&、|、^、~”分别表示“与、或、异或、取反”
xx = 0x87654321 & 0xffff0000;   // xx的值为  0x87650000
xx = 0x87654321 | 0xffff0000;   // xx的值为  0xffff4321
xx = 0xffff0000 ^ 0xff00ff00;   // xx的值为  0x00ffff00
xx = ~0xffff0000;               // xx的值为  0x0000ffff
“<<、>>、>>>”分别表示“左移、右移、补0右移”
xx = 0x12345678 <<  8;     // xx的值为  0x34567800
xx = 0x12345678 >>  8;     // xx的值为  0x00123456
xx = 0x87654321 >>  8;     // xx的值为  0xff876543
xx = 0x87654321 >>> 8;     // xx的值为  0x00876543

比较运算符
相等(==)、不等(--)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
if (xx == 5) {
    alert("xx is five.");
}
if (yy != "ABC") {
    alert("yy is not ABC.");
}
if (xx == null) {
    alert("xx is Null.");
}
if (yy != null) {
    alert("yy is not Null.");
}
if (xx < 123) {
    alert("xx is smaller than 123");
}
当类型不一致时,将被自动转换为字符串类型。如果不需要自动转换,可以用“===和!==”来代替“==”和“!=”。
if ( 123  ==   123 ) { ... }     // true(真)
if ("123" ==  "123") { ... }     // true(真)
if ("123" ==   123 ) { ... }     // true(真)
if ( 123  ==  "123") { ... }     // true(真)
if ( 123  ===  123 ) { ... }     // true(真)
if ("123" === "123") { ... }     // true(真)
if ("123" ===  123 ) { ... }     // false(假)
if ( 123  === "123") { ... }     // false(假)

复合运算符
加减乘除并赋值(+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=)
xx += 5;      // xx = xx + 5;
xx -= 5;      // xx = xx - 5;
xx *= 5;      // xx = xx * 5;
xx /= 5;      // xx = xx / 5;
xx %= 5;      // xx = xx % 5;
xx &= 0xff;   // xx = xx & 0xff;
xx |= 0xff;   // xx = xx | 0xff;
xx ^= 0xff;   // xx = xx ^ 0xff;
xx <<= 8;     // xx = xx << 8;
xx >>= 8;     // xx = xx >> 8;
xx >>>= 8;    // xx = xx >>> 8;

条件运算符
“exp1 ? exp2 : exp3”这和Ifelse语句相同功能但用法不同,这是运算符。
yy = (xx >= 5) ? "big" : "small";     //若xx>5,则yy的值为: "big"; 若xx<=5,则yy的值为: "small"

逗号分隔符
主要用于函数的参数之间分隔,for循环语句中也用来分隔语句。
for (i = 0, j = 0; i < 10; i++) {
    ......
}

null时注意
当对象为null时,该对象的方法和属性都不能使用,要特别注意。

运算符的优先顺序
优先顺序 运算符



数组([]) 括弧(( ))
増1減1(++ --) 负号(-) 取反(~) 非(!)
乗除余(* / %)
加減(+ -) 文字列连接(+)
位移(<< >> <<<)
比较(< <= >= >)
比较(== != === !==)
AND(&)
XOR(^)
OR(|)
与(&&)
或(||)
条件(? :)
赋值(=) 复合(+=等)
逗号(,)