Day 2 - Operators

在 JavaScript 里 Operator(运算子)有很多种,这边来介绍几个常用的运算子,包括算术运算子、指派运算子、比较运算子、逻辑运算子...等,还有 2 个比较进阶的用法 Nullish coalescing operator & Optional Chaining(不知道中文怎翻比较好抱歉 XD)/images/emoticon/emoticon01.gif

算数运算子

除了 +-*/ 之外,还有 %++--** 等。

  • % 取余数
console.log(17 % 3); //2
console.log(15 % 2); //1
  • ++--
    ++ 表示加 1,-- 表示减 1。
let x = 0;
x++;
console.log(x); // 1
let x = 2;
x--;
console.log(x); // 1
  • ** 次方
console.log(7**4); // 为 7 的 4 次方
console.log(2**10); // 为 2 的 10 次方

指派运算子

  • = 将第二个运算元的值储存在第一个运算元所指定的物件 (简单指派)。
    例如:x = y,表示将 y 赋值给 x ,所以 x 的值会和 y 相等。
  • += 将第一个运算元的值加上第二个运算元的值;将结果储存在第一个运算元所指定的物件,其他算术运算子方法亦同,Ex:-=*=/=
    例如:
    x = x + 1,可以简化为 x += 1
    x = x - 1,可以简化为 x -= 1
    x = x * 1,可以简化为 x *= 1
    x = x / 1,可以简化为 x /= 1
let x = 2;
x += 1;
console.log(x); // 3

比较运算子

  • ==(等於)
    用来比较等号左边的值和等号右边的"值"是否相等。
    例如:3 == "3",左边的 3 是数字,右边的 3 是字串,即使资料类型不一样,但值一样就是 true。
  • ===(严格等於)
    用来确认等号左边和右边的资料型态和值是否皆相等。
    例如:
    "3" === "3" 资料类型一样,值也一样,结果为 true。
    3 === "3" 值相同但资料类型不同,则结果为 false。
  • !=(不等於)
    仅确认值是否不同
    例如:4 != "4",虽然资料类型不同,但值相同,结果就为 false。
  • !==(严格不等於)
    确认值和资料类型是否不同,例如:
    4 !== "4",两者资料类型不同,所以结果为 true。
  • ><>=<=
    没什麽好解释的,国小就学过了~

逻辑运算子

  • && (and,且)
    全部条件都成立才会回传 true。
  • || (or,或)
    其一条件成立就回传 true。
  • ! (not)
    一个运算元能被转换成 True 时,就回传 false,否则回传 true。

Optional Chaining ?.

let lost = {owner:"Amy", wallet : { cash:10000 } };
// 确认钱包是否还在,假如钱包被偷走了肯定拿不回里面的钱
console.log(lost.wallet && lost.wallet.cash); // 10000
// 改成 Optional Chaining 的写法
console.log(lost.wallet ?. cash); // 10000

Nullish coalescing operator ??

?? 左边的东西是 null 或是 undefined 时,就把 ?? 右边的值给它。
例如:a ?? b,如果 a 不是 null 或 undefined,结果就是 a,反之,如果 a 是 null 或 undefined,结果就是 b。

let yourGirlfriend;
console.log(yourGirlFriend); // undefined
console.log(yourGirlfriend ?? "yourhands"); // yourhands

上面的例子只宣告了 yourGirlfriend 这个变数,但没有给她值(undefined),因为你没有女朋友,所以这时候结果会是 ?? 右边的值 yourhands/images/emoticon/emoticon10.gif
是不是很简单又好用呢~~~

参考资料:
MDN - Expressions and operators
Nullish coalescing operator


<<:  下载Python

>>:  [Day2]C# 鸡础观念- 与C#开发千里来相见

除了刷题之外的事 - System Architecture

除了刷题之外的事 刷题是练习解决问题的能力的一种方法,而这里的「问题」主要是指演算法问题。但在实务...

Day 20. Hashicorp Nomad: Docker driver image behavior

Hashicorp Nomad: Docker driver image behavior 在Has...

.NET Core第9天_MVC_Model的引入

在上一篇我们已经知道MVC路由和静态资源导入的方式 因此起手式 从新增专案.net core空专案到...

Day07:资料结构 - 杂凑表(Hash Table)

杂凑表,我需要那个酷东西 在线性资料结构中,若要找一个资料,花费的时间复杂度为O(n),或是可以选择...

用这9种技巧让你的部落格有个好名字

一、前言 经营部落格,会是一个长期的网路事业,在初期有许多部分我认为就应该思考好,在整个经营路上才...