JS基础语法

138 阅读2分钟

表达式和语句

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