运算子
MDN : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Expressions_and_Operators
一元运算子
delete , typeof 等等
三元运算子
(条件 ? 为 true 回传此结果(表达式) : 为 false 回传此结果(表达式))
var dollar = 100;var result = (dollar > 5 ? '有钱' : '没钱');// 三元运算子回传 有钱// 再赋予到 result 上// 由于 = 也是运算子 所以会回传 有钱console.log(result); //有钱
优先性及相依性
MDN : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
优先性
决定运算子彼此之间被语法解析的方式
优先性较高的运算子会成为优先性较低运算子的运算元
ex:
乘号优先性 大于 加号
相依性
决定运算方向
ex:
加号 : 由左至右
等号 : 由右至左
console.log(1 < 2 < 3); // trueconsole.log(3 > 2 > 1); // false
这里一定会好奇
console.log(3 > 2 > 1);
为什么是false呢???
说明一下
// console.log(3 > 2 > 1);// 这里会拆解成// console.log(3 > 2 ); // 回传 true// console.log(true > 1); // true 再跟 1 比对// true 转型成数值 1// 所以会变成 console.log( 1 > 1); //false
再来看一个例子
var a = 1;var b = 2;a = b = 3;// 这里 a 实际接收到的是 3 赋予到 b 所 "回传的结果"// 并非直接取 b 的结果console.log(a,b);
这时一定心想
XXX 是在绕口令是不是!!
我们再举一个例子
var b = {};// 在 b 物件新增 a 属性 且不可写入//这段会在后面介绍Object.defineProperty(b,'a',{ value : 2, writable : false,})var a = 3;a = b.a = 1;// 因为 b.a = 1 是表达式,所以会回传一个结果// 因此 a 是接收 b.a = 1 此表达式所回传的结果console.log(a , b.a); // 1 b.a依然是2
那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷!!