JavaScript函数作用域详解与变量生命周期

需积分: 9 0 下载量 123 浏览量 更新于2024-08-11 收藏 15KB MD 举报
在今天的课程"DAY05_函数(下)"中,我们将深入探讨JavaScript中的函数概念及其相关的概念,特别是作用域、变量生命周期以及变量使用规则。以下是主要内容的详细解析: 1. **作用域**: - 作用域是指变量在其定义范围内可以被访问的区域。JavaScript有全局作用域和局部作用域两种类型。 - **全局作用域**:在整个页面或脚本范围内有效,如`vara=123`,可以在`<script>`标签内外使用。全局作用域下有一个特殊的`window`对象,所有全局变量和函数都作为其属性或方法。 - **局部作用域**:在函数内部定义的变量,如`function fn(){ var b=456; }`,这些变量仅限于函数内部使用。全局和局部变量在同一名称下时,遵循"就近原则",即优先使用当前作用域的变量。 2. **变量生命周期**: - 全局变量在页面加载时创建,直到页面关闭才会销毁。 - 局部变量在函数被调用时创建,函数执行完毕后自动销毁,不会占用内存直到被垃圾回收机制处理。 3. **变量使用规则**: - **访问规则**:在寻找变量时,遵循自上而下的搜索顺序,先在当前作用域查找,找不到再向上级作用域查找,直到全局作用域。如果全局范围内找不到,就会抛出`ReferenceError`。 - **赋值规则**:尽管全局变量可以直接赋值,但在函数内部,对未声明的局部变量赋值是不允许的,会报错。同时,局部变量不会污染全局环境,这是JavaScript避免命名冲突的重要机制。 4. 示例代码: ```javascript var num=100; function fn(){ var num2=200; // 局部变量num2,仅在fn函数内部可见 console.log(num); // 100(全局变量) console.log(num2); // 200(局部变量) } fn(); console.log(num); // 100(全局变量) console.log(num2); // ReferenceError: num2 is not defined (局部变量已销毁) ``` 通过理解和掌握这些知识点,你将能更有效地编写和管理JavaScript代码,避免变量污染和提升代码可读性。在实际编程过程中,理解作用域和变量规则至关重要,它们直接影响代码的组织和维护。