什么是表达式和语句?

表达式和语句不能完全区分。一般来说,表达式都有值,语句可能有也可能没有。语句一般会改变声明和赋值。

例如:1+2 是一个表达式,var a = 1是一个语句。

函数也是表达式,只有函数有返回值。

console.log表达式的返回值就是log函数本身

console.log(3)的返回值是undefined,并不是3,3只是打印出来的值而已。

标识符的规则

标识符是声明时取名字需要用到的符号

规则:第一个字符,可以是Unicode字母$或_或中文,后面的字符,除了前面所说的,还可以有数字。

if else 语句

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

{}在语句只有一句的时候可以省略,但是不建议这样做。

比较变态的无大括号例子:

var a = 2;

if(a > 100)

if(a >10)

console.log(a);

这段代码没有问题,相当于if内嵌套了if。

变态的缩进例子:

var a = 1;

if(a == 2)

console.log(‘a’); if语句内到这里就结束,不会打印a

console.log(‘a等于2’); 会打印这句话

推荐写法,if else语句一定要用大括号

switch语句

switch是if else语句的升级版

语法:

switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}

大部分时候,不要省略break,break会让程序结束,省略了就会继续往下走。

while语句

语法:

while (条件)
{
需要执行的代码
}

条件的返回值为true,就会执行大括号里的代码,然后循环判断下一次条件,继续执行。

如果条件为false,就会终止循环。

变态例子:

var a = 0.1;

while(a !== 1){

a = a + 0.1;

}

结果是 始终循环下去,是因为浮点数计算的偏差造成的,a始终不会等于1

for语句

for是while循环的方便写法

for(语句1;表达式2;语句3){

循环体

}

注意,执行完循环体后,才执行语句3

变态例子:

for(var i=0;i<5;i++){

setTimeout(function(){

console.log(i)

},0)

}

打印结果是五个5,因为setTimeout会在for循环结束后才执行。

注意:表达式2不要省略,否则会无限循环。

break语句:在循环中跳出当前for的所有循环,注意break是不会再走语句3了。

continue语句:跳出这一次循环,直接继续下一次循环

label语句

用的很少,面试会考

foo:{

console.log(1);

break foo;

console.log(‘不会输出’);

}

这是一个代码块,不是对象。