【发布时间】:2021-08-11 05:58:16
【问题描述】:
在 if 块内定义的变量,在 if 块外也可以访问
console.log(name) // undefined
if (true) {
var name = "harry"
console.log(name) // harry
}
console.log(name) // harry
我知道了:
if (true) {
sayHello() // hello
function sayHello() {
console.log("hello")
}
sayHello() // hello
}
sayHello() // hello
这个也是。
但是这里发生了什么?????????????????????????????????
sayHello() // TypeError: sayHello is not a function
if (true) {
sayHello()
function sayHello() {
console.log("hello")
}
sayHello()
}
sayHello()
【问题讨论】:
-
使用 ES6 函数现在是块作用域。 “在 if 块内定义的变量,在 if 块外也可访问”仅对于
var声明的变量为 true。 -
看看上面建议的严格模式和非严格模式之间的区别,并了解 var、let 和 const 之间的区别。另外,花一些时间了解提升在 javascript 中的工作原理。
标签: javascript scope hoisting