# 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){} //错误
1
2
2
# return
关键字不能回车
function f(){
return
'我是返回值'
}
// undefined
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里是否是真,我都执行
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
}
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
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
记得要把对象区分开