JavaScript之作用域与闭包详解
前言: JavaScript是一种应用非常广泛的语言,其也有一些自身特点和优势,本文重在讲述其作用域机制以及闭包,会从一些实例来探讨其机理。 作用域在JavaScript程序员日常使用中有不同的含义,如下所示: this绑定的值; this绑定的值定义的执行上下文; 一个变量的“生命周期”; 变量的值解析方案,或词法绑定。 下面将讲诉JavaScript作用域概念,由此引出变量值解析方案的一般想法,最后再探讨JavaScript里闭包这一重要知识点。 1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。所以,全局变量是 window 对象的属性,全局函数是 window 对象的方法,甚至 HTML DOM 的 document 也是 window 对象的属性之一。 全局变量是JavaScript里生命周期(一个变量多长时间内保持一定的值)最长的变量,其将跨越整个程序,可以被程序中的任何函数方法访问。 在全局下声明的变量都会在window对象下,都在全局作用域中,我们可以通过window对象访问,也可以直接访问。 1 var name = "jeri"; 2 console.log(window.name); // 输出:jeri 3 console.log(name); // 输出