什么是表达式和语句?
表达式和语句不能完全区分。一般来说,表达式都有值,语句可能有也可能没有。语句一般会改变声明和赋值。
例如: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(‘不会输出’);
}
这是一个代码块,不是对象。