在 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 |
主要功能在分隔运算式循序执行,由左至右并回传最後一个运算式的值。
如果需要在一个运算式里同时包含多组运算式,就可用逗号 ,
来分隔。
例如 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
这是 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
胡立-逻辑运算的小撇步:|| 与 && 的短路性质
>>: [Python 爬虫这样学,一定是大拇指拉!] DAY07 - URL / URN / URI (3)
人的科技文明发展始终来自於人性 奠基於各国的工业发展水准发达及科技发展的技术发达,在这两大的基石之上...
#12. Drawing App 这次要挑战的是比小画家还阳春的绘图app,会利用到canvas a...
一、前言 大家不论学习什麽程序语言、选择走前端後端或系统分析,一定都学过HTML这个文本标记语言...
第4话 Agile 汇出 Part & BOM (2) 本篇讲解如何汇出BOM表 主料BOM...
基本流程图与跨职能流程图 流程可以用流程图来表示,但它们有一个缺点——标准流程图无法表明谁负责这些活...