1、比较大小
1、比较返回值为 布尔值
alert( 2 > 1 ); // true (correct)
alert( 2 == 1 ); // false(wrong)
alert( 2 != 1 ); // true (correct)
- 可将比较结果赋值
let result = 5 > 4; // assign the result of the comparison alert( result ); // true
2、字符串比较
字符串是一个字母一个字母的比较
alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true
3、不同类型值比较
比较不同类型的值时,JavaScript 会将值转换为数字
alert( '2' > 1 ); // true, string '2' becomes a number 2
alert( '01' == 1 ); // true, string '01' becomes a number 1
- 神奇的事情
- 因为 0/’0‘ 都会转为 0
let a = 0; alert( Boolean(a) ); // false
let b = "0"; alert( Boolean(b) ); // true
alert(a == b); // true!
4、严格相等 ===
一般常用 ===比较少用 == 在 == null 时会使用
alert( 0 === false ); // false, because the types are different
- 神奇的事情
- 记住这个 特殊的事情 值
null和彼此undefined相等==,不等于任何其他值
`null/undefined`转换为数字:`null`变成`0`,而`undefined`变成`NaN`
alert( null == undefined ); // true
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
9 > 3 → true
"app" > "pine" → false 字符串为字符比较 a < p
"2" > "19" → true 字符串间从第一个开始比较 2 > 1 为 true
undefined == null → true
undefined === null → false `null`和彼此`undefined`相等`==`,不等于任何其他值
null == "\n0\n" → false
null === +"\n0\n" → false
2、if 条件判断
-
if(...)语句计算括号中的条件,如果结果为true,则执行代码块 -
三元表达式 (简化if else if )
let result = condition ? value1 : value2;
-
可以 将多个三元 连接起来,不过一般不这样用,维护性差
-
来个小问题 会打印吗 ?
-
当然 前提是 我们已经知道 除了空字符串(并且
"0"不为空)之外的任何字符串都将出现true在逻辑上下文中
if ("0") { alert( 'Hello' ); }
3、神奇运算符
1、??
- 什么意思 ?
a ?? b:
- 如果
a已定义,则a, - 如果
a未定义,则b.
let user;
alert(user ?? "Anonymous"); // Anonymous (user not defined) user没有赋值
let user = "John";
alert(user ?? "Anonymous"); // John (user defined) user赋值了 选这个
2、和 || && 连用
let x = 1 && 2 ?? 3; // Syntax error
let x = (1 && 2) ?? 3; // Works
alert(x); // 2
4、循环 loop
1、while
condition是真的,code但循环体中的 会被执行
while (condition) { // code // so-called "loop body" }
- 单行正文不需要花括号
let i = 3;
while (i) alert(i--);
- do...while
do { // loop body } while (condition);
2、for
- 最常用的循环方式
for (begin; condition; step) { // ... loop body ... }
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2 alert(i); }
- 请注意,必须存在两个
for分号;。否则会出现语法错误 - 但 for的三部分 都可以省略
- 那么 下面这个会打印 什么内容 ?
for (;;) { // repeats without limits }
- 继续下一次 循环 continue ... break
该continue指令是break. 它不会停止整个循环。相反,它停止当前迭代并强制循环开始新的循环(如果条件允许)
- 来个问题 这个打印啥 ?
let i = 3; while (i) { alert( i-- ); }
- 再来两个
let i = 0; while (++i < 5) alert( i ); //++在前 立马加
let i = 0; while (i++ < 5) alert( i );// ++在后 先使用之前的值
for (let i = 0; i < 5; i++) alert( i );
3、switch case
- 将
switch有一个或多个case模块和一个可选的默认值 - 这个 在 redux 使用 也比较多 在 reducer中 进行 不同 actions的判断 并且处理
switch(x) {
case 'value1': // if (x === 'value1')
... [break]
case 'value2': // if (x === 'value2')
... [break]
default:
... [break]
}
// 这是个例子 你说他打印出什么 ?
let a = 2 + 3;
switch (a) {
case 3: alert( 'Too small' );
break;
case 4: alert( 'Exactly!' );
break;
case 5: alert( 'Too big' );
break;
default:
alert( "I don't know such values" ); }