在js中,只有函数具有作用域。也就是说,在一个函数内部定义的变量在函数外部是无法访问的。因此,借此实现私有变量是一种合理的选择。
考虑下面的代码
function foo() { var a = 10; function bar() { a *= 2; } bar(); return a; } function foo() { var a = 10; function bar() { a *= 2; return a; } return bar; } var baz = foo(); // baz is now a reference to function bar. baz(); // returns 20. baz(); // returns 40. baz(); // returns 80. var blat = foo(); // blat is another reference to bar. blat(); // returns 20, because a new copy of a is being used.
bar函数的引用被赋给变量baz,这个函数在foo函数外部被调用,它仍然能够访问变量a。原因是:javascript的作用域是词法性的,函数运行在定义他们的作用域中(foo内部的作用域),而不是运行在调用他们的作用域中。只要bar被定义在foo函数中,它就能访问在foo中定义的所有变量,即使foo函数以及执行完毕。
在foo函数返回后,它的作用域被保存下来,但只有它返回的那个函数能访问这个作用域。 在示例中,baz和blat各自拥有这个作用域及变量a的副本,而且只有它们自己能对其进行修改。
相关推荐
讨论javascript作用域,很多人被javascript作用域搞迷糊了,这个应该有用。
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 ...
深化理解javascript作用域其次篇之词法作用域和动态作用域_.docx
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...
01JavaScript作用域.md
深入理解JavaScript作用域
JavaScript 作用域 和作用域链作用域作用域链 作用域 作用域就是变量与函数的可访问范围,作用域控制着变量与函数的可见性和生命周期。换句话说,作用域决定了代码区块中变量和其他资源的可见性。 function fun() { ...
本文是深入理解javascript作用域系列第二篇——词法作用域和动态作用域 词法作用域 第一篇介绍过,编译器的第一个工作阶段叫作分词,就是把由字符组成的字符串分解成词法单元。这个概念是理解词法作用域的基础 ...
js作用域基本介绍.doc
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计...
JavaScript作用域示例详解_.docx
javascript中没有块级作用域,取而代之的javascript使用的是函数作用域,下面使用示例学习一下js作用域的使用方法
深入理解JavaScript作用域共12页.pdf.zip
对javascript执行环境,作用域的深层次理解,
javascript作用域链(Scope Chain)初探.docx
本文主要给大家分享了关于javascript作用域面试题的相关内容,分享出来供大家参考学习,下面来一起看看吧。 一、作用域: 在了解作用域之前,首先需要明白一些基础概念: 每一个变量、函数都有其作用的范围,超出...