JS 运算子 与 优先性及相依性 DAY53

运算子

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); // true
console.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

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷!!/images/emoticon/emoticon51.gif


<<:  Win10复制预设使用者设定档

>>:  Why is computer so slow and how to fix

Day14 - 解决状态大爆炸 - 2: Hierarchical States (阶层式状态)

同样的例子。 假设这次我希望某些状态是依赖於某些状态的! 比如说有输入有效(valid)跟输入无效(...

[Day18]基本款网格交易

网格交易的讯号跟之前使用的讯号最大差别就是,网格他并不是只有满手和空手的选项,他会有一个部位大小。所...

Day03 如何使用别人做好的捷径

Hello 大家 连假第一天干甚麽去了呢~~ 睡到自然醒肯定是必备的吧!! 今天就来说我们要怎麽使用...

[DAY 23] Elo Rating

当想要比较两人的强弱时 通常比较过去结果很容易受到各因素干扰 如果可以直接量化两人的表现 就可以直接...

[Day3] 安全签章 - XOR加密(HashID)

API流程 I have A Nonce, I have A key, Uh It's time t...