JavaScript 循环

92 阅读3分钟

表达式

表达式与语句

表达式

  • 1+2表达式的值为3
  • add(1,2)表达式的值为函数的返回值
  • console.log表达式的值为函数本身(undefind)

语句

  • var a =1是一个语句

二者的区别

  • 表达式一般都有值
  • 语句可能有也可能没有语句一般会改变环境(声明、赋值)
  • 上面的区别并不是绝对的

ps:写语句的时候,大小写要敏感

空格

  • 大部分空格没有实际意义
  • var a = 1和var a=1没有区别
  • 加回车大部分时候也不影响
  • 只有一个地方不能加回车,那就是return后面(直接执行return后面就不执行return后面的内容,等于白写)
  • 前三项一般对于日常写代码来说影响不太大

标识符

规则

  • 第一个字符,可以是Unicode字母或$或或中文后面的字符,除了上面所说,还可以有数字
  • 变量名是标识符
  • var= 1
  • var $ =2
  • var . = 6 var你好= 'hi'

区块

block

把代码包在一起

{
    let a = 1
    let b = 2
}

if 语句

语法
if(表达式){语句1} else{语句2}
  • 在语句只有一句的时候可以省略,不建议这样做
变态情况
  • 表达式里可以非常变态,如a=1
  • 语句1里可以非常变态,如嵌套的if else
  • 语句2里可以非常变态,如嵌套的if else
  • 缩进也可以很变态,如面试题常常下套a = 1
if(a=== 2)
    console.log( 'a' )
    console.log( 'a等于2')

ps:在区块中(局部作用域)只执行第一句,第二句是不会执行的

第二句只会在全局作用域执行(或者局部作用域之外的作用域)

最推荐写法

if(表达式){
    语句1
} else{
    语句2
}

switch 语句

选择

与下面列出的结果相匹配,对了就执行对应的代码,不对就执行default

语法
switch (fruit) {
    case "banana" :
    // ...
    break ;
​
    case "apple" :
    // ...
    break ;
    default:
    // ...
}
break
  • 大部分时候,省略break你就完了(一个没写break会贯穿到下面,直到看到break才结束)
  • 少部分时候,可以利用break

问号冒号表达式

表达式1 ? 表达式2 : 表达式3

比如

var a = 1;
a = 2 ? a = 3 : a = 4; 

结果 a = 3

先判断表示式1中对还是错

  • 对,执行表达式2
  • 错,执行表达式3

&& 运算符

and and ——

真假判断
  • 表示只有当全部的值都为真才返回真
  • 只要有一个假就返回假
普遍判断
Z = A && B && C
  • Z取第一个假值或者C的值(没有假值)
  • 并不会一定会取到 true 或者 false

|| 运算符

真假判断
  • 只要有一个真就返回真
  • 只有全部是假才返回假
普遍判断
Z = A || B || C || D
  • Z取第一个真值或D(全是假的)
  • 并不会取true / false

while 循环

语法
while (表达式){
    语句
}
  1. 判断表达式的真假
  2. 当表达式为真,执行语句,执行完再判断表达式的真假
  3. 当表达式为假,执行后面的语句

其他

  • do...while用得不多,自行了解

for 循环

语法糖 for是while循环的方便写法

语法

for(语句1;表达式2;语句3){
    循环体
}
  • 先执行语句1然后判断表达式2
  • 如果为真,执行循环体,然后执行语句3
  • 如果为假,直接退出循环,执行后面的语句

break 和 continue

break:退出所有循环

continue:退出当前一次循环,执行下一次循环

label 语句

用的很少,面试会考(概率5%)

语法
foo: {
    console.log(1);
    break foo;
    console.log('本行不会输出');
}
console.log(2);

上面所写:

在break的时候中断foo代码块,后面的console.log不会执行,最终结果输出1和2

面试

{
    foo: 1
}

这个是啥?

这个一个代码块,里面有一个标签foo ,赋值为1