什么是表达式和语句
-
表达式一般都有值,语句可能有也可能没有
-
语句一般会改变环境(声明、赋值)
-
但并不绝对 表达式
-
1+2 表达式的值为 3
-
add(1, 2)表达式的值为函数的返回值(只有函数有返回值)
-
console.log表达式的值为函数本身
-
console.log(3)表达式的值为undefined 语句
-
var a = 1 是一个申明语句 注意:
JS对大小写敏感。 大部分的空格和回车没有实际意义,但return后面不能加回车。
标识符的规则
第一个字符可以为unicode字母或$或_或中文。后面的字符除了前面还可以有数字
var _ = 1
var $ = 2
var 你好 = 'hi'
但不能出现如
var 9$ = 1
ERROR: Uncaught SyntaxError: Invalid or unexpected token
if...else...语句
语法
if(表达式){语句1}else{语句2}
语句中可以嵌套if...else
注意尽量使用最没有歧义的写法
最推荐写法:
if(表达式){
语句
}else if(表达式){
语句
}else{
语句
}
次推荐写法:
function fn(){
if (表达式) {
return 表达式
}
if (表达式) {
return 表达式
}
return 表达式
}
switch语句 (if语句的升级版)
语法:
switch( ){
case" ":
//...
break;
case" ":
//...
break;
default:
//...
}
不写break会让语句贯穿,有时也可以利用
问号冒号表达式
语法:
表达式1? 表达式2: 表达式3;
常用于简化if和else中都只包含一个语句的if...else...表达式。
&&短路逻辑
也用于替代if...else...表达式 语法:
A&&B&&C&&D
取A,B,C,D中第一个假值或者D,但不会取true/false。
||短路逻辑
语法:
A||B||C||D
与&&短路逻辑相反,取A,B,C,D中的第一个真值,同样不会取true/false。
while循环
语法:
while(表达式){语句}
判断表达式的真假;若表达式为真,执行语句;若表达式为假,执行后面语句;执行完再次判断表达式的真假。
死循环
a = 0.1
while ( a !==1){
console.log(a)
a = a + 0.1
}
上述语法出现死循环的原因是浮点数
for循环 (for循环是while循环的方便写法)
语法:
for (语句1; 表达式2; 语句3){
循环体
}
先执行语句1;然后判断表达式2;若为真,执行循环体,然后执行语句3;若为假,退出循环,执行后面语句。
for( var i = 0; i<5; i++) {
console.log(i)
}
执行上述代码会打印0,1,2,3,4。
for( var i = 0; i<5; i++) {
setTimeout(()=>{console.log(i)})
}
执行上述代码会打印5次5,setTimeout会让语句延迟执行。
break 退出所有循环
for(var i=0; i<10; i++){
if(i%2===1){
break
}
}
continue 退出本次循环
for(var i=0; i<10; i++){
if(i%2===1){
continue
}else{
console.log(i)
}
label语句
语法:
标识符: {
console.log(i);
break 标识符;
console.log('本行不会输出');
}
console.log(2);
label语句用得很少但面试会考