Javascript的局部作用域分为 函数作用域 和 块作用域。
函数作用域在函数内,块作用域在大括号({}
)内。
函数作用域
- 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。
- 函数的参数也是函数内部的局部变量。
- 函数执行完毕后,函数内部的变量被清空了。
块作用域
- 在javascript中使用大括号(
{}
)包裹的代码称为代码块。代码块内部声明的变量外部可能无法访问。 - let 声明的变量会产生块作用域。
- const 声明的变量会产生块作用域。
- var声明的变量不会产生块作用域,即在外部可以被访问。
- 现在推荐使用let 或 const。
示例:用let声明的变量可以产生块作用域
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
for (let i = 1; i <= 3; i++) {
// 块作用域
console.log(i);
}
// 外部无法访问块作用域定义的变量i
console.log(i)
</script>
</body>
</html>
示例:用var声明的变量不产生块作用域
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
for (var i = 1; i <= 3; i++) {
// 块作用域
console.log(i);
}
console.log(i)
</script>
</body>
</html>