const name = 'hello'
console.log(!typeof name === 'object') // false
console.log(!typeof name === 'string') // false
console.log(typeof a)
let a = 'a' // Uncaught ReferenceError: a is not defined at xxx
console.log(typeof b)
const b = 'b' // Uncaught ReferenceError: cannt access 'b' before initialization
// 如果区块中存在 let 和const 命令,这个区块对这些命令声明的变量,从一开始就形成封闭作用域,在声明之前使用这些变量,就会报错。
const fn = ob => {
console.log(obj) // {value: 1}
ob.value = 2
console.log(obj) // {value: 2}
ob = { value: 3 }
console.log(obj) // {value: 2}
}
const obj = {
value: 1
}
fn(obj)
console.log(obj) // {value: 2}
// ob 和 obj 都是指向堆内存空间的指针,修改 value 属性值后其被更改,对ob重新赋值后,obj指向堆内存中分配的新空间。
try {
setTimeout(() => {
throw new Error('error_0') // 不会被捕获,事件循环
})
Promise.reject('error_1')// try catch无法捕获Promise.reject抛出的错误
await Promise.reject('error_2') // try catch 可以捕获await 抛出的错误
} catch (e) {
console.log(e)
}
网友评论