何为变量提升?

var 和 let const 的区别

  • var 是 ES5 语法,let const 是 ES6 语法;var 有变量提升
  • var 和 let 是变量,可修改;const 是常量,不可修改(对象属性可以修改)
  • let const 有块级作用域,var 没有
// 变量提升 ES5
console.log(a) // undefined
var a = 100
// 类似
var c
console.log(c) // undefined
c = 30
// 为了区别 var
console.log(b) // Uncaught ReferenceError: Cannot access 'b' before initialization
let b = 20
for (var i = 0; i < 10; i++) {
    var j = i + 1
}
console.log(i, j) // 10 10
// 块级作用域
for (let i = 0; i < 10; i++) {
    let j = i + 1
}
console.log(i, j) // Uncaught ReferenceError: i is not defined

typeof 能判断哪些类型

  • undefined string number boolean symbol
  • object(注意,typeof null === ‘object’)
  • function

列举强制类型转换和隐士类型转换

  • 强制:parseInt parseFloat toString 等
  • 隐式:if、逻辑运算、==、+拼接字符串