分支和循环
JS 的这俩玩意和其他语言没什么区别,分支都是用 if
、else if
、else
或者三目运算符 ?:
,循环也就是 for
、 while
以及 do while
。
分支
if 什么的我就不多说了,都一个样。主要是运算符和条件判断的内容。
判断
JS 中,在以下情况会被当作 false:
- undefined
- null
- false
- 0
- '' (空字符串)
对比
由于 JS 是动态类型,所以对比就带着一些麻烦。
对比是否相等有两个运算符,一个是 ==
另一个是 ===
。
== 运算符只会比较左右两侧的值,只要值相等,结果就是 true。
123 == '123'; // true
true == 'true'; // false
false == false; // true
undefined == undefined; // true
null == null; // true
null == undefined; // true
// 注意 NaN 不与任何值相等,包括自己
NaN == NaN; // false
而 === 会同时比较值和类型,只有两者都相同时,才是 true。
123 === '123' // false
null === undefined // false
不相等的对比也有两个:!=
和 !==
,区别和上面的一样,!=
是值不相等,!==
是值和类型都不相等。
逻辑运算符
我现在就记得起这么几个要说的:!
、 &&
、 ||
和 ?:
。
!
这个运算符的意思是取反。
&&(与)
&& 的意思是,当这个运算符左右两侧的语句都是 true 是就为 true,需要注意的是:在左侧的语句为 false 时,就不会执行右侧的语句。这个特性在之后会很常用。
||(或)
|| 就是两侧任意一侧为 true 就是true。和上面类似的,当左侧为 true 时,就不会执行右侧。
"use strict"
let value = 1;
console.log(value); // 1
false && ++value;
console.log(value); // 1
true || ++value;
console.log(value); // 1
null && ++value;
console.log(value); // 1
null || ++value;
console.log(value); // 2
?:
?: 其实就是个 if 语句,只不过写得省了一点而已。
循环
循环和其他语言也差不多,不过注意的是,在循环中最好都是用 let
而不是 var。