JavaScript 基本语法及面试注意点

641 阅读3分钟

1. 表达式和语句

表达式一般都有值,语句可能有值也可能没有,语句一般会改变环境(声明、赋值),但这些都不是绝对的。

  • 1 + 2 表达式值为 3
  • console.log 表达式的值为函数本身
  • add(1, 2) 表达式的值为函数的返回值
  • console.log(3) 表达式的值为 undefined,打印3
  • var a = 1 是一个语句,值为 undefined

2. 标识符的规则

  • 第一个字符可以是 Unicode字母、$、下划线(_)或中文
  • 后面的字符,除了上述字符,还可以有数字
  • 变量名是标识符
  • JavaScript 大小写敏感

3. 注释

  • 好的注释:告诉你为什么要这样写
  • 烂的注释:告诉你写了什么

4. if else 语句

// 打印结果是什么?
var a = 1;
if(a === 2) 
    console.log(a);
    console.log('a等于2');
// 结果打印 a等于2,因为 if 语句省略花括号时,只有一句
// 打印结果是什么?
var a = 1;
if(a === 2) 
    console.log(a), console.log('a等于2');
// 结果什么也不打印,因为逗号表示语句未结束
// 前端常用 && 和 || 代替 if 语句
a = a || 100;
// 等同于以下语句
if(a) {
    a = a;
} else {
    a = 100; // 保底值
}
window.f1 && console.log('不存在');
false && 3 || true && 4/* 结果为4。
 (1) 因为与、或、非运算优先级  ! > && >|| ,所以先执行两边的 && 运算,最后执行 || 运算。
 (2) && 运算,左边表达式判断是 false,则返回左边表达式的值,否则返回右边表达式的值。
     false && 3 结果为 false。true && 4结果为4。
 (3) || 运算,左边表达式判断是 true,则返回左边表达式的值,否则返回右边表达式的值。*/

5. while / for 语句

  • for 循环:可以在很明确循环次数上去做内容
  • while 循环:不明确循环次数,也可以做。场景:如猜数字
  • do…while:至少会执行一次
// 是否会死循环?
var a = 0.1;
while(a != 1) {
    console.log(a);
    a = a + 0.1;
}
// 会死循环。因为浮点数相加过程中逐渐不精确,无法到达1
// 执行完语句后 i 为多少?
for(var i = 0; i < 5; i++) {
    console.log(i);
}
// i = 5
// 打印结果是什么?
for(var i = 0; i < 5; i++) {
    setTimeout(() => {
        console.log(i);
    }, 0)
}
// 打印 5 次 5。
// for 循环先执行,每次执行把定时器放到事件队列里。
// 主线程 for 循环执行完了,才会执行事件队列里的。
// 希望 5次按顺序打出数字,将 var 改为 let 即可。
// 几秒打出几?
for(var i = 0; i < 3; i++) {
    setTimeout(() => {
        console.log(i);
    }, 1000*i)
}
// 0 秒输出一次 3,1 秒输出一次3, 2 秒输出一次 3。

6. break / continue

break 和 continue 跳出最接近的循环,对循环外的循环没有影响。

7. label 语句

语法如下

foo: {
    console.log(1);
    break foo;
    console.log('本行不会输出');
}
console.log(2);
// 打印结果 1 和 2
// 以下是什么?
{
    foo: 1;
}
// 是 label,值为1
// 以下是什么?
var a = {
    foo: 1
}
// 是对象