表达式和语句

Javascript 中一段段的句子可以分为两种: 语句和表达式. 它们的区别是, 表达式有值, 语句可能有也可能没有; 语句一般用来修改环境, 比如声明和赋值

返回值: 只有函数才有返回值, 比如 console.log 的返回值是它本身, console.log(3)的返回值是 undefined.

标识符

标识是用来给变量或者常量命名的字符串. 命名的规则是:

  • 首字母以unicode字母(包括英文字母), ‘$’, ‘_’ 或中文汉字的其中一种开头,
  • 第二位开始可以用数字以及上面提到的字符

条件语句

用来形成选择结构的语句称为条件语句. 一般用法是, 当满足某个条件时, 执行一段语句. 不满足时执行另一段语句.

if 语句

典型结构

  1. if (condition) {
  2. 语句一
  3. }else {
  4. 语句二
  5. }

上面的代码表示: 当condition(表达式) 成立时, 执行语句一, 否则, 执行语句二.

注意括号内一定是一个表达式, 根据它的值做出判断.

更普遍的写法:

  1. if ( ) {
  2. } else if ( ) {
  3. } else {
  4. }

switch 语句

fruit 这个表达式的值与下面的某一项匹配时, 开始执行语句, 直到遇见break.

  1. switch (fruit) {
  2. case "banana":
  3. // ...
  4. break;
  5. case "apple":
  6. // ...
  7. break;
  8. default:
  9. // ...
  10. }

需要注意的是, break 一定不能省略, 除非你确实需要使用它达成明确的目的.

问号冒号表达式

常见形式

  1. (表达式1)?(语句1):(语句2)

效果: 当表达式1 成立时, 执行语句1, 否则执行语句2.

&&短路逻辑

短路逻辑用于表达式中, 通过短路运算得到一个真值或假值, 也叫’与操作’, 为方便解释, 我们假设有四个语句 A, B, C和D, 把它们用 && 连接起来.

  1. A && B && C && D

运算过程是

  • 当 A 为假, 取 A 的值, 表达式结果为假
  • 当 A 为真, 继续往后看, 若 B 为假, 则取 B 的值, 表达式的结果为假,以此类推
  • 如果所有值都为真, 取 D 的值, 结果为真

规律就是, 从前往后找直到遇见第一个假值; 如果全为真, 则表达式的结果为真, 否则为假.

|| 短路逻辑

与 && 性质一样, 逻辑刚好相反. 规律是从前往后找直到遇见第一个真值; 如果全为假, 则表达式的结果为假, 否则为真.

循环语句

用来构造循环结构的语句是循环语句, 循环的意思是重复的进行某一项操作.

for 循环

for 循环语句的结构

  1. for(语句1; 表达式2; 语句3){
  2. 循环体
  3. }
  • 语句1 是变量初始化
  • 表达式2 是判断循环体是否被执行的条件
  • 语句3 是递增方式

为了避免死循环,有几点需要注意:

  • 2 和 3 两部分必须有
  • 表达式2 的计算值必须能被3 改变, 不能是个常量
  • 语句3 的递增方式的原则是使 2 最终等于一个假值, 结束掉循环

continue 和 break 的区别

break 会直接退出循环, 执行之后的语句; continue 的 作用是退出这一次循环体的执行, 进行后面的循环环节.

break 会退出循环, 但只会退出它所在的那一层的循环; 如果是循环的嵌套, 内层的 break 不会影响 外层 的循环执行.

label 语句

使用label语句是为了给代码块添加标签,方便将来替换使用. 可以参考Javascript中的label语句.

其它

  • 浮点数不相等可能造成死循环
  • return 那一行没有别的内容时, 会自动追加一个 undefined
  • 如果是用 var 定义的变量, 循环体中的setTimeout会在循环结束后才执行