【学习 JavaScript】 JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 字符串模板 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语句 JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript 代码规范 JS 函数 JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包 JS 类 JavaScript 类 JavaScript 类继承 JavaScript 静态方法 JS HTML DOM DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象 JS 高级教程 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象 JS 浏览器BOM JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie JS 库 JavaScript 库 JavaScript 测试 jQuery JavaScript 测试 Prototype JS 实例 JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结 JS 参考手册

JavaScript 作用域学习笔记

在 JavaScript 中,作用域决定了变量和函数的可见性和生命周期。JavaScript 采用的是词法作用域,也就是静态作用域,即变量和函数的作用域在定义时就确定了。

全局作用域

在 JavaScript 中,没有在函数内部声明的变量和函数都属于全局作用域。全局作用域中的变量可以在任何地方访问,而且生命周期随着页面的关闭而结束。

示例代码:

Copy Code
var globalVar = "I am a global variable"; function globalFunction() { console.log("I am a global function"); } console.log(globalVar); // 输出 "I am a global variable" globalFunction(); // 输出 "I am a global function"

函数作用域

在 JavaScript 中,每个函数都有自己的作用域,函数内部的变量只能在函数内部访问,函数外部无法访问。函数内部可以定义其他函数,内部函数也可以使用外部函数定义的变量和函数。

示例代码:

Copy Code
function outerFunction() { var outerVar = "I am an outer variable"; function innerFunction() { var innerVar = "I am an inner variable"; console.log(innerVar); console.log(outerVar); } innerFunction(); } outerFunction(); // 输出 "I am an inner variable" 和 "I am an outer variable"

块级作用域

在 ES6 中,引入了 letconst 关键字,可以用来声明块级作用域变量,即在花括号 {} 内部声明的变量只能在花括号内部访问,外部无法访问。

示例代码:

Copy Code
function blockScope() { if (true) { let blockVar = "I am a block variable"; console.log(blockVar); } console.log(blockVar); // Uncaught ReferenceError: blockVar is not defined } blockScope();

使用块级作用域可以避免变量污染和命名冲突,提高代码的可读性和可维护性。