Javascript高级编程2

本文详细介绍了ECMAScript中的各种运算符,包括一元运算符如delete、void、增量和减量运算符等;位运算符如NOT、AND、OR、XOR以及移位运算符;布尔运算符如NOT、AND和OR;以及等性运算符如==、===、!=、!==等,并解释了它们的工作原理及特殊值处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ECMAScript 运算符

一元运算符
delete
delete 运算符删除对以前定义的对象属性或方法的引用。
var o = new Object;
o.name = "David";
alert(o.name); //输出 "David"
delete o.name;
alert(o.name); //输出 "undefined"

delete 运算符不能删除开发者未定义的属性和方法。

void
void 运算符对任何值返回 undefined。该运算符通常用于避免输出不应该输出的值.

前增量/前减量运算符
var iNum = 10;
++iNum;

var iNum = 10;
--iNum;

后增量/后减量运算符

var iNum = 10;
iNum++;

var iNum = 10;
iNum--;

一元加法和一元减法
var iNum = 20;
iNum = +iNum;
alert(iNum); //输出 "20"

var iNum = 20;
iNum = -iNum;
alert(iNum); //输出 "-20"

位运算 NOT

位运算 NOT 由否定号(~)表示

位运算 NOT 是三步的处理过程:
把运算数转换成 32 位数字
把二进制数转换成它的二进制反码
把二进制数转换成浮点数

位运算 NOT 实质上是对数字求负,然后减 1,因此 25 变 -26。

位运算 AND

位运算 AND 由和号(&)表示,直接对数字的二进制形式进行运算。

位运算 OR
位运算 OR 由符号(|)表示,也是直接对数字的二进制形式进行运算。

位运算 XOR
位运算 XOR 由符号(^)表示,当然,也是直接对二进制形式进行运算。

左移运算

左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。

有符号右移运算
有符号右移运算符由两个大于号表示(>>)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。

无符号右移运算
无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。

对于负数,情况就不同了。
无符号右移运算用 0 填充所有空位。对于正数,这与有符号右移运算的操作一样,而负数则被作为正数来处理。

------------------------------------------
Boolean 运算符
Boolean 运算符有三种:NOT、AND 和 OR。

与其他乘性运算符相似,对于特殊值,取模运算符也有特殊的行为:
如果被除数是 Infinity,或除数是 0,结果为 NaN。
Infinity 被 Infinity 除,结果为 NaN。
如果除数是无穷大的数,结果为被除数。
如果被除数为 0,结果为 0。

与乘性运算符一样,在处理特殊值时,ECMAScript 中的加法也有一些特殊行为:
某个运算数是 NaN,那么结果为 NaN。
-Infinity 加 -Infinity,结果为 -Infinity。
Infinity 加 -Infinity,结果为 NaN。
+0 加 +0,结果为 +0。
-0 加 +0,结果为 +0。
-0 加 -0,结果为 -0。

与加法运算符一样,在处理特殊值时,减法运算符也有一些特殊行为:
某个运算数是 NaN,那么结果为 NaN。
Infinity 减 Infinity,结果为 NaN。
-Infinity 减 -Infinity,结果为 NaN。
Infinity 减 -Infinity,结果为 Infinity。
-Infinity 减 Infinity,结果为 -Infinity。
+0 减 +0,结果为 +0。
-0 减 -0,结果为 -0。
+0 减 -0,结果为 +0。
某个运算符不是数字,那么结果为 NaN。

ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。

执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。

全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

var sNum = "66";
var iNum = 66;
alert(sNum == iNum); //输出 "true"
alert(sNum === iNum); //输出 "false"

非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。

var sNum = "66";
var iNum = 66;
alert(sNum != iNum); //输出 "false"
alert(sNum !== iNum); //输出 "true"

乘法/赋值(*=)
除法/赋值(/=)
取模/赋值(%=)
加法/赋值(+=)
减法/赋值(-=)
左移/赋值(<<=)
有符号右移/赋值(>>=)
无符号右移/赋值(>>>=)

用逗号运算符可以在一条语句中执行多个运算。
var iNum1 = 1, iNum = 2, iNum3 = 3;
逗号运算符常用变量声明中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值