表达式和语句
1+2表达式的值为3
add(1,2)表达式的值为函数的返回值
console.log表达式的值为函数本身
console.log(2)表达式的值为undefined
var a = 1 是一个语句
二者的区别
表达式一般都有值,语句可能有可能没有
语句一般会改变环境(声明,赋值)
空格注意事项
空格和回车在大部分情况下没有实际影响,但是不能在return后面加回车,会返回undefined
标识符
规则:第一个字符,可以是Unicode字母或$或_或中文,后面的字符,除了上面的,还可以有数字。
if语句
if(表达式){}
{}在只有一个语句时可以省略
Switch语句
每个case都要写一个break,如果没有break,会按顺序执行下面的case直到遇到break
&&短路
a&&b:如果a为真,返回b,如果a为假,直接返回a,短路b
a&&b&&c&&d:返回第一个假值或返回d
||短路
a||b:如果a为假,返回b,如果a为真,返回a,短路b
常见应用场景给某个变量设定默认值
a = a || 100
如果a存在就a=a,如果a不存在,a=100
while循环
let a = 0.1;
while (a !== 1) {
console.log(a)
a = a + 0.1
}
由于浮点数的计算不精确,上面的代码会死循环
for循环
for (var i = 0; i < 5; i++) {
console.log(i)
}
console.log(i)
打印出5,i=4时,执行i++,退出for循环,打印5
for (let i = 0; i < 5; i++) {
console.log(i)
}
请问这里打印出的i是多少?
console.log(i)
i是undefined,let声明的变量不会变量提升
for (var i = 0; i < 5; i++) {
setTimeout(()=>{
console.log(i)
}, 0)
}
结果打印5次5
每执行一次for循环,最后打印5,setTimeout会等待for循环执行完毕再执行
for (let i = 0; i < 5; i++) {
setTimeout(()=>{
console.log(i)
}, 0)
}
把var换成let,就会打印0,1,2,3,4
break和continue
break是跳出离他最近的一个for循环
continue是跳出本次循环。
label
{
a:1;
}
以上代码并非对象,表示代码块中有一个a标签 值为1