- 一元运算符
- delete
delete o.name;
- delete 运算符不能删除开发者未定义的属性和方法。(我测试发现返回true,但实际未生效)
- void
- 前增/减量
- ++num
- => num= num+1
- —num
- => num = num - 1
- ++num
- 后增/减量
- num++
- => num= num+1
- num—
- => num = num - 1
- 前增和后增的区别,定义
var iNum = 10;
- var iNum = 10; alert(—iNum); //输出 “9”
- var iNum = 10; alert(iNum—); //输出 “10”
- num++
- 一元加/减法
- =+
- 一元减法就是对数值求正
- var a = 10; a =+ a; // 输出 10
- =-
- 一元减法就是对数值求负
- var a = 10; a =- a; // 输出 -10
- 如果是字符串,则会转换为数字
- =+
- delete
位运算
- ~(NOT)
- 处理过程
- 把运算数转换成 32 位数字
- 把二进制数转换成它的二进制反码
- 把二进制数转换成浮点数
- 实质
- 对数字求负,然后减 1
- var a = 10; var b = ~a; alert(b); // 输出 -11
- 处理过程
& (AND)
- 对数字的二进制形式进行运算
它把每个数字中的数位对齐,然后用下面的规则对同一位置上的两个数位进行 AND 运算: | 第一个数字中的数位 | 第二个数字中的数位 | 结果 | | —- | —- | —- | | 1 | 1 | 1 | | 1 | 0 | 0 | | 0 | 1 | 0 | | 0 | 0 | 0 |
var res = 25 & 3; alert(res); // 输出 1
|(OR)
- OR 运算符采用下列规则: | 第一个数字中的数位 | 第二个数字中的数位 | 结果 | | —- | —- | —- | | 1 | 1 | 1 | | 1 | 0 | 1 | | 0 | 1 | 1 | | 0 | 0 | 0 |
^ (XOR)
- XOR 不同于 OR,当只有一个数位存放的是 1 时,它才返回 1
- XOR的规则如下: | 第一个数字中的数位 | 第二个数字中的数位 | 结果 | | —- | —- | —- | | 1 | 1 | 0 | | 1 | 0 | 1 | | 0 | 1 | 1 | | 0 | 0 | 0 |
<< (左移运算)
- 它把数字中的所有数位向左移动指定的数量
(有符号右移运算)
- 有符号
- 它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)
- 有符号右移运算符恰好与左移运算相反
- 有符号
(无符号右移)
- 将无符号 32 位数的所有数位整体右移
- 对于正数,无符号右移运算的结果与有符号右移运算一样。
- 负数则被作为正数来处理
- ~(NOT)
- 逻辑运算符
- ! (NOT)
- 行为
- 如果运算数是对象,返回 false
- 如果运算数是数字 0,返回 true
- 如果运算数是 0 以外的任何数字,返回 false
- 如果运算数是 null,返回 true
- 如果运算数是 NaN,返回 true
- 如果运算数是 undefined,发生错误
- 行为
- && (AND)
- 行为
- true+true => true
- true+false => false
- true+false => false
- false+false => false
- 逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值
- 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
- 如果两个运算数都是对象,返回第二个对象。
- 如果某个运算数是 null,返回 null。
- 如果某个运算数是 NaN,返回 NaN。
- 如果某个运算数是 undefined,发生错误。
- 行为
- || (OR)
- 行为
- true+true => true
- true+false => true
- true+false => true
- false+false => false
- 如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值
- 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
- 如果两个运算数都是对象,返回第一个对象。
- 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
- 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
- 如果某个运算数是 undefined,发生错误。
- 行为
- ! (NOT)
- 四则运算符
- :乘法
- 两数相乘
- 负负得正,正负得负
- 特殊处理
- 如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
- 如果某个运算数是 NaN,结果为 NaN。
- Infinity 乘以 0,结果为 NaN。
- Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。
- Infinity 乘以 Infinity,结果为 Infinity。
- :乘法
- / :除法
- 用第二个运算数除第一个运算数
- 负负得正,正负得负
- 特殊处理
- 如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
- 如果某个运算数是 NaN,结果为 NaN。
- Infinity 被 Infinity 除,结果为 NaN。
- Infinity 被任何数字除,结果为 Infinity。
- 0 除一个任何非无穷大的数字,结果为 NaN。
- Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity。
- % :取余
- 特殊处理
- 如果被除数是 Infinity,或除数是 0,结果为 NaN。
- Infinity 被 Infinity 除,结果为 NaN。
- 如果除数是无穷大的数,结果为被除数。
- 如果被除数为 0,结果为 0。
- 特殊处理
- :加法
- 特殊处理
- 某个运算数是 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。
- 特殊处理
- :减法
- 关系运算
- 常规
- <
=
- <=
- 数字与字符串
- 无论何时比较一个数字和一个字符串,都会把字符串转换成数字,然后按照数字顺序比较它们
- 字符不能转换成有意义的数字,则会转化为NaN,任何包含 NaN 的关系运算符都要返回 false
- var bResult = “a” < 3;alert(bResult);
- 常规
- 等性运算符
- ==:等号
- 为确定两个运算数是否相等,这两个运算符都会进行类型转换
- !=: 非等号
- 为确定两个运算数是否相等,这两个运算符都会进行类型转换
- 类型转换规则
- 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
- 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
- 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
- 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
- ===: 全等号
- 只有在无需类型转换运算数就相等的情况下,才返回 true
- var sNum = “66”;var iNum = 66;
- alert(sNum == iNum); //输出 “true”
- alert(sNum === iNum); //输出 “false”
- 只有在无需类型转换运算数就相等的情况下,才返回 true
- !==: 非全等号
- 只有在无需类型转换运算数不相等的情况下,才返回 true。
- 等号,非等号,全等号,非全等号
- 等号和非等号用于处理原始值,全等号和非全等号用于处理对象
- 特殊情况处理
- null == undefined true
- “NaN” == NaN false
- 5 == NaN false
- NaN == NaN false
- NaN != NaN true
- false == 0 true
- true == 1 true
- true == 2 false
- undefined == 0 false
- null == 0 false
- “5” == 5 true
- ==:等号
- 条件运算符
- 三目运算
- variable = boolean_expression ? true_value : false_value;
- 三目运算