表达式和语句

  • 表达式一般有值
  • 语句一般没有值当然也可能会有值,用来改变环境
  • 值包括返回值和函数
  • 1+2 表达式的值为3
  • add(1,2)表达式的值是函数的返回值
  • 值可以是函数本身,如console.log表达式的值就是函数本身
  • console.log(3)表达式的值是undifined

回车和空格

回车和空格还有缩进在JS里面没有实际意义
但在return后面不能加回车,不然JS会在自动在return后面帮我们加上undifined

标识符

规则:
第一个字符,可以是Unicode字母或者$或者_或者中文
后面的字符,除了以上所说还可以有数字
变量名就是标识符,如:

  • var $ = 9;
  • var $2 = 5;
  • var _ = 6;
  • var 你好 = ‘hi’;

if else 语句

if(表达式){语句一}else{语句二}
{}在语句只有一句时可以省略,但不建议这样做

变态情况

if括号里的表达式一般要是三个等号(===),不然会导致无限循环
语句一里面可以嵌套if else 语句
语句二里面同样可以嵌套 if else 语句
问:如下代码最后输出的是什么?

  1. var a = 1
  2. if(a===2)
  3. console.log('a')
  4. console.log('a不等于2')
  5. //最后在控制台输出 ‘a不等于2’,因为这里省略了‘{}’,if只把‘console.log('a')’当作其语句
  6. //两个语句中用‘,’连结,if就会把‘ console.log('a')’和‘console.log('a不等于2')’当作其语句了

最推荐使用的写法

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

次推荐使用的写法

  1. fuction fn(){
  2. if(表达式){
  3. return 语句}
  4. if(表达式){
  5. return 语句
  6. }
  7. return 语句
  8. }

switch 语句

switch 语句是 if else语句的升级版

  1. var x = 1;
  2. switch (x) {
  3. case 1:
  4. console.log('x 等于1');
  5. break;
  6. case 2:
  7. console.log('x 等于2');
  8. break;
  9. default:
  10. console.log('x 等于其他值');
  11. break;
  12. }
  13. //在控制台输出"x 等于1"

case代码块之中如果没有break语句会导致不会跳出switch结构,而会一直执行下去。
switch语句部分和case语句部分,都可以使用表达式。

问号冒号表达式

如下if-else 语句可以用问号冒号表达式替代

  1. var a = 5;
  2. var b = 6;
  3. if(a > b){
  4. a++
  5. }else{
  6. b++
  7. }
  8. //会执行 b++

用问号冒号表达式写成如下代码

  1. var a = 5;
  2. var b = 6;
  3. (a > b) ? a++ : b++
  4. //会执行 b++

&&短路逻辑(逻辑与)

表达式: A&&B

B真 B假
A真 取B为值 取B为值
A假 取A为值 取A为值

遇到一个值为false的就不再往下运行
即取第一个遇到的false值或者最后一个遇到的true值

||短路逻辑(逻辑或)

表达式: A||B

B真 B假
A真 取A为值 取A为值
A假 取B为值 取B为值

遇到一个值为true的就不再往下运行
即取第一个遇到的true值或者最后一个遇到的false值

while循环语句

语法:

while(表达式){语句}
注:while语句里面必须有对表达式里面的变量进行更改的代码,否则会导致while无限循环进行下去

  1. var a = 1;
  2. while(a<10){
  3. a++
  4. }

do while 循环就是先执行一遍里面的语句,再对表达式进行判断比较,之后就与while循环流程一致

  1. var a=1;
  2. do {
  3. a++
  4. }while(a<10)

for循环语句

for是while循环的方便写法

语法:

for(初始化语句;判断语句;自增或者自减){循环体}
先执行初始化语句
然后执行判断语句
如果判断为false,直接退出for循环,执行后面的语句
如果判断为true,执行循环体,然后执行自增或自减语句,进而继续执行判断语句,如此往复。

break和continue

如果只有一层循环:
break 是直接退出当前循环,执行循环以外的语句,当然也不会再进行自增自减运算。
continue 是退出当前循环,然后再进入该循环,会进行自增自减运算。
如果循环不止一层:
break是直接退出当前离它最近的一层循环,然后从它的上级循环继续开始,执行的是上级循环的自增自减运算。
continue依旧是退出当前循环,然后再进入该循环,执行该循环的自增自减运算。

label

  1. foo:{console.log(1);
  2. break foo;
  3. console.log('本行不会输出')
  4. }
  5. console.log(2);
  6. /*输出
  7. 1
  8. 2
  9. */

如下代码可以作为面试题

  1. {
  2. foo: 1;
  3. }

问:上述代码是什么东西
答:上述代码在里是一个foo标签,语句是1。