# JavaScript语法(一)
# 表达式(expression)与语句(statement)
表达式通常产生一个值(如: 1, a(作为函数参数), 2+2, 4==2
), 而语句则是负责执行(var a = 1)
.表达式可以写在语句里, 称之为expression statement(var a = MakeSomethingHappen()
). 可语句不能写在表达式里.
if(var a = 1){} //错误 function(var a = 1){} //错误
Copied!
1
2
2
# return
关键字不能回车
function f(){ return '我是返回值' } // undefined
Copied!
1
2
3
4
5
6
2
3
4
5
6
# if
语句不加括号
不加括号只会把下面的第一行当作if
内的block.
var a = 1 if(a === 1) console.log(a) console.log('不管if里是否是真,我都执行') //* 当a为1时, 打印值是: // 1 // 不管if里是否是真,我都执行 //* 当修改a为2时, 打印值是: // 不管if里是否是真,我都执行
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 浮点数相加造成死循环
var a = 0.1 while(a!==1){ console.log(a) a = a + 0.1 }
Copied!
1
2
3
4
5
2
3
4
5
直觉上10个0.1相加应该等于1, 但是js引擎返回的结果却不是
# setTimeout
和 for
循环
for(var i = 0; i<5;i++){ setTimeout(()=>{ console.log(i) }) } //5 //5 //5 //5 //5
Copied!
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
原因是setTimeout
会在任务队列的末尾执行, 所以i
是在累加到5
后才开始执行setTimeout
的.
# break
, continue
, label
break
表明停止当前的for循环
continue
表明停止当前这一轮的循环
label
记得要把对象区分开