[Day07] 赋值运算子、逗号运算子、逻辑运算子笔记

赋值运算子(Assignment operators)

在 Javascript 里运算有递增的写法 ++、递减的写法 --

var a = 10;
a ++; // a = a + 1

透过 = 把右侧的运算式指派(assign)至等号左侧的变数 a。
一般比较常用到的四则运算,再来看看 MDN 其他赋值运算子的写法。

名称 简化的运算子 意义
赋值 x = y x = y
加法赋值 x += y x = x + y
减法赋值 x -= y x = x - y
乘法赋值 *= y x = x * y
除法赋值 x /= y x = x / y
余数赋值 x %= y x = x % y
指数赋值 x **= y x = x ** y
左移赋值 x <<= y x = x << y
右移赋值 x >>= y x = x >> y
无号右移赋值 x >>>= y x = x >>> y
位元 AND 赋值 x &= y x = x & y
位元 XOR 赋值 x ^= y x = x ^ y
位元 OR 赋值 x |= y x = x | y

逗号运算子(Comma operator)

主要功能在分隔运算式循序执行,由左至右并回传最後一个运算式的值。
如果需要在一个运算式里同时包含多组运算式,就可用逗号 , 来分隔。
例如 for 回圈:

for (i = 0, j = 10; i < 10; i++, j++) {
  k = i + j;
}

透过 , 逗号运算子可以将多组运算式看作是同一个。
或者宣告的时候:

var a = 10;
var b = 10;

可写成

var a = 10, b =10;

这样可同时宣告多组变数并给予值。

但要注意的是

var a = b = 10;

是不同的意思,此句拆开来看是

b = 10;
var a = b;

如果不懂正确写法的含义,会在无意识下写了一个未宣告的全域变数。
另外发现,在物件、阵列里也会出现 , 像曾经在 Day04 物件实字 提到举的例子,是否也算是逗号运算子?後来经过查找 MDN 的叙述及犀牛的举例,证明不是。MDN CommaOperator Usage notes
Day04 的物件实字

逻辑运算子

这是 JS 跟其他语言比较不一样的地方,&&|| 可以用短路性质来理解,怎麽说呢?他们在判断的时候会先检查左边的数值。

&&:如果左侧可被转成 false,即回传运算式 1
||:如果左侧可被转成 true,即回传运算式 1
console.log( 运算式 1 && 运算式 2 );

简单来说透过 &&|| 所产生的值不一定会是 Boolean,而是两者其中之一

var a = 123;
var b = "abc";
var c = null;
var d = undefined;
var e = true;

console.log( a && b ); // "abc",123 被 ToBoolean 转型 true,故回传 b
console.log( a || b ); // 123,因为转成 true 故回传 a
名称 用法 解释
逻辑 AND (&&) 运算式1 && 运算式2 假如 运算式1 可以被转换成 false的话,回传 运算式1; 否则,回传 运算式2。 因此,&&只有在 两个运算元都是True 时才会回传 True,否则回传 false。
逻辑 OR (||) 运算式1 || 运算式2 假如 运算式1 可以被转换成 true的话,回传 运算式1; 否则,回传 运算式2。 因此,||在 两个运算元有任一个是 True 时就会回传 True,否则回传 false。
逻辑 NOT (!) !运算式 假如单一个运算元能被转换成 True 时,回传 false,不然回传 true。

参考资料:
MDN 运算式与运算子
008 天重新认识 JavaScript
胡立-逻辑运算的小撇步:|| 与 && 的短路性质


<<:  Day 10 阿里云架设网站-资料库搬迁上云

>>:  [Python 爬虫这样学,一定是大拇指拉!] DAY07 - URL / URN / URI (3)

未来狂想:国防军事

人的科技文明发展始终来自於人性 奠基於各国的工业发展水准发达及科技发展的技术发达,在这两大的基石之上...

#12. Drawing App(原生JS版)

#12. Drawing App 这次要挑战的是比小画家还阳春的绘图app,会利用到canvas a...

Day18:【技术篇】HTML的冷门使用技巧

一、前言   大家不论学习什麽程序语言、选择走前端後端或系统分析,一定都学过HTML这个文本标记语言...

4.移转 Aras PLM大小事-Agile 汇出 Part & BOM (2)

第4话 Agile 汇出 Part & BOM (2) 本篇讲解如何汇出BOM表 主料BOM...

跨职能流程图指南

基本流程图与跨职能流程图 流程可以用流程图来表示,但它们有一个缺点——标准流程图无法表明谁负责这些活...