运算符和比较

假设你在跟踪购物车。你把价格加起来,应用折扣,检查总额是否达到免运费阈值,并决定购物车为空时是否显示警告。这些步骤中的每一个都涉及运算符:一个符号,接受一个或两个值并产生一个新值。本章涵盖你经常使用的运算符,从对数字进行算术运算到比较值和组合真假测试。
算术和赋值
**算术运算符**执行你已经知道的数学运算:+ 加法,- 减法,* 乘法,/ 除法。还有一个你可能没见过:%,余数运算符,它给出除法后的余数。
const total = 8 + 5; // 13
const change = 20 - 13; // 7
const leftover = 17 % 5; // 2,因为 5 整除进 17 三次,剩余 2
console.log(total); // 13当你想基于一个值本身来更新它时,有一个简写方法。不必写 score = score + 10,你可以写 score += 10。意思相同:取当前值,加 10,存储结果回去。
let score = 100;
score += 10; // score 现在是 110
score -= 30; // score 现在是 80
console.log(score); // 80要将一个数字上升或下降恰好一个,++ 和 -- 一步完成。count++ 加一,count-- 减一。
let lives = 3;
lives--; // lives 现在是 2
console.log(lives); // 2% 用于除法后的余数。当你从自身更新一个值时,使用简写:score += 10 而不是 score = score + 10。++ 或 -- 将一个数字上升或下降一个。我花了一段时间才信任这些,但它们是同样的数学,只是写得更短。 比较
一个**比较**询问关于两个值的问题,并用 true 或 false 回答。那些真假答案是布尔值,这是你的程序稍后用来做决定的东西。
你最常用的比较是 ===,它询问"这两个完全相等吗?"
const answer = 42;
console.log(answer === 42); // true
console.log(answer === 7); // false它的反面是 !==,它询问"这两个不同吗?"对于顺序有 <、>、<= 和 >=,它们像数学中那样工作:小于、大于、小于等于、大于等于。
const age = 18;
console.log(age >= 18); // true
console.log(age !== 21); // true总是用 === 比较,从不用 ==。双等号版本有一个让人惊讶的怪癖,三等号版本每次都做你期望的。
true 或 false 回答。使用 === 检查相等,!== 表示"不同",<、>、<=、>= 表示顺序。坚持使用 === 并跳过 ==,因为双等号版本有一个惊讶,三等号版本表现良好。 逻辑运算符和真值
通常你需要组合多个比较。**逻辑运算符**让你这样做:&&(与),||(或),和 !(非)。
&& 只有在两侧都是 true 时才是 true。|| 在至少一侧是 true 时是 true。! 将一个布尔值翻转为其相反的值。
const age = 20;
const hasTicket = true;
console.log(age >= 18 && hasTicket); // true,两个都是 true
console.log(age < 13 || hasTicket); // true,一侧足够
console.log(!hasTicket); // false,翻转有一个相关的想法叫做真值和假值。在真或假的设置中,JavaScript 将某些非布尔值视为好像它们是 false。假值是 false、0、""(一个空字符串)、null、undefined 和 NaN。其他所有东西都算作真值。
const name = "";
console.log(!name); // true,一个空字符串是假值&& 是"两个",|| 是"任一个",! 翻转一个布尔值。顶部的是,JavaScript 将某些值视为假值:false、0、""、null、undefined 和 NaN 是假值,其他一切都是真值。这让 !name 代表"没有名字被给出"。 运算符从这里何去何从
运算符是语言的动词:它们取你存储的值,并将它们转变为结果和决定。算术产生新数字,比较产生布尔值,逻辑运算符组合那些布尔值成为你的程序作用的是或否答案。
那些布尔值自己做不了太多。下一步是使用它们来掌舵你的代码,当一个检查通过时运行一个分支,当它失败时运行另一个,这就是条件语句章节的内容。如果这里的任何值感觉模糊,数据类型章节是数字、字符串和布尔值得到全部处理的地方。

