前置基本知识

1.表达式和语句和值

  • 表达式:

表达式是由运算符构成,并运算产生结果(值与返回值);

  • 是对创建和赋值的对象 进行一种使用,是一种计算,可以类比为定义或者执行一种函数。
  • 一般来说,每个表达式都会产生一个值,它可以放在任何需要一个值的地方
  • 比如,作为一个函数调用的参数
  • 返回值与值:两者一般为表达式所特有,其中返回值 为函数特有
    • 语句:

语句可以理解成一个行为,用来修改环境

  • 一般的javascript中的语句分为下面几种:
    • 声明语句:变量声明和函数声明,定义(创建)与赋值
    • 赋值语句
    • 控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。
    • 表达式语句:
      • 【某些需要语句的地方,你可以使用一个表达式来代替.这样的语句称之为表达式语句.但反过来不可以:你不能在一个需要表达式的地方放一个语句.比如,一个if语句不能作为一个函数的参数】
      • 这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。
        • 值:

一般由表达式产生

  • 特殊的有:函数表达式产生的值为 返回值

2.标识符及其规则

代码中用来标识变量(en-US)函数、或属性(en-US)的字符序列
目前讲的是变量名的标识符

  • 规则:

JavaScript中,标识符:

  • 只能包含字母或数字或下划线(“_”)或美元符号(“$”)
  • 不能以数字开头
  • 不能与 JavaScript 关键字、保留字重名,以下是JavaScript自带保留字表
  • image.png
  • 标识符与字符串不同之处在于字符串是数据,而标识符是代码的一部分

if 语句

最推荐使用的写法:

  1. if (表达式1) {
  2. 语句1
  3. } else if (表达式2) {
  4. 语句2
  5. } else {
  6. 语句3
  7. }

次推荐使用的写法:

function fn() {
    if (表达式1) {
      return 表达式1
  }
  if (表达式2) {
      return 表达式2
  }
  return 表达式3
}
  • {}在语句只有一句的时候可以省略,但不建议
  • 缩进与分号和逗号的踩坑举例:

image.png


switch 语句

if…else…升级版
容易踩坑,不推荐常用
JS基本语法 - 图3
每个case都需要写一个break,不然,如果banana没有break, 那么它会继续执行apple的部分,直到碰到了Break


三元表达式(?:表达式)

最简单的 if…else… 写法
适用于if中只有一个语句,else中也只有一个语句的时候
语法结构写法:

  • 条件表达式 ? 表达式1 : 表达式2
    • 执行思路:如果条件表达式结果为真 则返回表达式1的值,如果条件表达式结果为假 则返回 表达式2的值

&&短路逻辑

也是if…else…的简单写法
是浅运算

  • A&&B&&C&&D 执行思路:
    • 依次从前往后比对取值
    • 若前者为假 则直接取值前者,不顾后者(短路)
    • 若前者为真 则 仍继续往后查看后者是真是假(以后者/后后者为重)
      • 若后者为真 ,则取值后者
      • 若后者为假 ,则取值后者

||短路逻辑

也是if…else…的简单写法
与&&短路逻辑相反

  • A||B||C||D 执行思路:
    • 依次从前往后对比取值
    • 若前者为真 则直接取值前者, 不顾后者(短路)
    • 若前者为假 则仍继续往后查看后者是真是假
      • 若后者为真 ,则取值后者
      • 若后者为假 ,则取值后者
  • 常见的应用场景:
    • 设定保底值 举例: ``` a = a || 100

//等同于

if (a) { a = a } else{ a = 100 //保底值 }


---

<a name="Am4A6"></a>
# while 循环语句
前置知识:浮点数的计算不精确,算术运算符中尽量不涉及浮点运算,否则容易导致死机和报错

**语法:**

while (条件表达式) { //循环体语句 }


- **while 循环语句执行思路:**
   - 当条件表达式为真,执行循环体语句,执行完**再次判断**条件表达式真假,**循环往复**
   - 当条件表达式为假,退出

<a name="fwWrC"></a>
## do...while 循环语句
**语法:**

do { //循环体语句 } while (条件表达式)


- **区别于while 循环语句执行思路:**
   - 先斩后奏,先执行一次循环体语句后再判断 **再循环**

---

<a name="k4Swk"></a>
# for 循环语句
如果while循环语句是手动挡,那么for循环语句则是自动挡 

**语法:**

for (初始化变量;条件表达式;操作表达式) { //循环体 }


- **for循环语句执行思路:**
   - 先初始化变量
   - 然后判断条件表达式
      - 若为真,执行循环体,然后执行操作表达式
      - 若为假,直接退出循环

---

<a name="FUDCq"></a>
# 中断关键字break 和 continue
break  跳出离它最近的一个整个循环 【相当于一枚**定时炸弹**】<br />continue 跳过当次循环,继续下一个(next)【相当于预感到地雷要爆炸时刚好跳过】<br />return fasle 跳出整个循环/函数,常用于阻止事件冒泡

---

<a name="9c56Q"></a>
# label 语句
用途只有面试考中概率5%<br />标记语句 可以和 [break](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/break) 或 [continue](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/continue) 语句一起使用。<br />标记就是在一条语句前面加个可以引用的标识符

**语法:**

foo: { console.log(1); break foo; console.log(‘本行不会输出’); } console.log(2)

``` foo 表示 label的标识符

  • 面试

问:
{
foo:1
}
表示什么

答:
foo是个label,1是语句内容
非对象

学习参考链接:适合入门《网道 JavaScript 教程