1.语句

  1. 语句是为了完成某种任务而进行的操作
  1. var a =1
  1. 这就是一个语句。

2.表达式

  1. 表达式是指一个为了得到返回值的计算式,1+2表达式的值为3
  2. 表达式与语句的区别就在于表达式一般都有值,语句可能有也可能没有。而且语句一般会改变环境。

3.标识符的规则

  1. 一:第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号(`$`)和下划线(`_`)。<br /> 二:第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字`0-9。`

4.if else语句

  1. 语法:if(表达式){语句1} else {语句2}<br />变态情况:表达式里可以非常变态,如a=1<br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586955665275-d63843a5-2c67-4102-aabe-73ee90217754.png#align=left&display=inline&height=121&margin=%5Bobject%20Object%5D&name=image.png&originHeight=241&originWidth=293&size=12922&status=done&style=none&width=146.5) ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586955734528-0ba4942c-a7b3-4ae0-bd33-62b53105ef8d.png#align=left&display=inline&height=118&margin=%5Bobject%20Object%5D&name=image.png&originHeight=236&originWidth=357&size=13741&status=done&style=none&width=178.5) =和===的区别:=是赋值为1而 ===才是等于1<br /> 语句1里可以非常变态,如嵌套 if else 同时还可以省掉花括号 <br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586957376697-82f7c5e5-286b-4688-93b5-2ee2c1ce510e.png#align=left&display=inline&height=129&margin=%5Bobject%20Object%5D&name=image.png&originHeight=258&originWidth=236&size=12281&status=done&style=none&width=118) ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586956977214-7d001171-1d80-465b-81ec-51bd61c77f1f.png#align=left&display=inline&height=95&margin=%5Bobject%20Object%5D&name=image.png&originHeight=196&originWidth=307&size=11124&status=done&style=none&width=149)
  2. 语句2里可以非常变态,如嵌套 if else 与语句1同理<br /> 缩进也可以非常变态(坑)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586957667694-1c73395c-71d1-4f3a-9151-7884c1c04f02.png#align=left&display=inline&height=94&margin=%5Bobject%20Object%5D&name=image.png&originHeight=188&originWidth=293&size=8696&status=done&style=none&width=146.5) = ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1586957741017-43d78d79-9b04-4781-b44a-a82c68d32d64.png#align=left&display=inline&height=94&margin=%5Bobject%20Object%5D&name=image.png&originHeight=188&originWidth=235&size=8123&status=done&style=none&width=117.5)因为console.log不成立直接就跳过了, 所以后面的a=2就会打出来了。<br /> 如果console.log('a'),console.log('a=2') 代表这句话还没结束 会得到undefined<br /> 如果console.log('a');console.log('a=2') 代表这句话已经结束 会得到a=2<br />推荐语句写法:
  1. if(表达式){
  2. 语句
  3. }else if(表达式) {
  4. 语句
  5. }else{
  6. 语句
  7. }

5. whlie for语句(当···时)

语法:whlie(表达式){语句}

  1. whlie(表达式){语句}
  1. 判断表达式的真假 <br /> 当表达式为真,执行语句 执行完再次判断表达式的真假<br /> 当表达式为假,直接跳过,执行后面的语句<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587005849819-9856e063-94f9-420c-af5d-e94593c8b0fa.png#align=left&display=inline&height=262&margin=%5Bobject%20Object%5D&name=image.png&originHeight=524&originWidth=251&size=13766&status=done&style=none&width=125.5) ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587006285193-51b9d71f-43fd-41cc-ba5c-f289f9cf2af3.png#align=left&display=inline&height=80&margin=%5Bobject%20Object%5D&name=image.png&originHeight=159&originWidth=313&size=8711&status=done&style=none&width=157) 后者是一个死循环,因为浮点数加着加着就不 精确了<br /> <br /> for语法:for(语句1;表达式2;语句3){<br /> 循环体<br /> }<br />
  1. for(语句一;表达式二;语句三){
  2. 循环体
  3. }
  1. 先执行语句一,然后判断表达式二<br /> 如果为真,执行循环体,然后执行语句三<br /> 如果为假,直接退出循环,执行后面的语句<br /> 正常语法: ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587007761874-723d86c9-0c19-4cb5-81a1-de17b256dc41.png#align=left&display=inline&height=194&margin=%5Bobject%20Object%5D&name=image.png&originHeight=388&originWidth=379&size=13892&status=done&style=none&width=189.5) 执行完了就是a<5中最大的数再加一。<br /> 变态:![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587008919689-6dbac011-e1f2-464a-8634-100fbaceccbe.png#align=left&display=inline&height=106&margin=%5Bobject%20Object%5D&name=image.png&originHeight=211&originWidth=375&size=12592&status=done&style=none&width=187.5) 最后的值依旧是5,已经执行完了即便过一会再执 行也依旧是5
  2. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587111610171-f35b151f-93bc-456d-8d10-f7ed24ae2fbd.png#align=left&display=inline&height=189&margin=%5Bobject%20Object%5D&name=image.png&originHeight=378&originWidth=493&size=15552&status=done&style=none&width=246.5) 满足一部分人的幻想
  3. 举例:![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587009902907-a74cbbfa-ac53-4ab3-b655-3aeea340e9e2.png#align=left&display=inline&height=221&margin=%5Bobject%20Object%5D&name=image.png&originHeight=442&originWidth=219&size=15132&status=done&style=none&width=109.5) ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587010448146-0356e424-99d0-4226-8b33-aff4b577ed7b.png#align=left&display=inline&height=181&margin=%5Bobject%20Object%5D&name=image.png&originHeight=361&originWidth=513&size=22193&status=done&style=none&width=256.5)<br /> <br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587009471025-dfa3f18f-9f7d-4a43-ab64-578b747efdc6.png#align=left&display=inline&height=254&margin=%5Bobject%20Object%5D&name=image.png&originHeight=507&originWidth=283&size=17439&status=done&style=none&width=141.5) 如果不确定fn的调用时间就不能确定a的值

6.break和continue

  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587011836502-2c16bc47-af9f-46e4-9bf0-75404a2cc5be.png#align=left&display=inline&height=74&margin=%5Bobject%20Object%5D&name=image.png&originHeight=148&originWidth=279&size=7700&status=done&style=none&width=139.5) 执行完语句1之后不会再执行语句三(a++),已经跳出了。
  2. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587012720488-0d0b6b49-c02f-4d73-899e-663640c87b6a.png#align=left&display=inline&height=150&margin=%5Bobject%20Object%5D&name=image.png&originHeight=300&originWidth=299&size=11183&status=done&style=none&width=149.5) 执行完循环体之后不再执行a++,而最小的奇数就是1 <br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1291817/1587011435107-b2a43007-8bd8-4a05-a679-3271e1b30a6b.png#align=left&display=inline&height=185&margin=%5Bobject%20Object%5D&name=image.png&originHeight=370&originWidth=294&size=14054&status=done&style=none&width=147) 当a%2为奇数时直接跳出,继续打出偶数<br />

label语句:

  1. 标识符{
  2. sonsole.log(1);
  3. break 标识符;
  4. console.log('本行不会输出')
  5. }
  6. console.log(2)

{
foo : 1 ;
} 代码块中是一个标签,一个label内容为1,它并不是一个对象。