JS实用篇复习笔记(4)

251 阅读3分钟

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 > 3true 
"app" > "pine"false  字符串为字符比较 a < p
"2" > "19"true       字符串间从第一个开始比较  2 > 1true
undefined == nulltrue  
undefined === nullfalse   `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

image.png

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" ); }