JavaScript的Function Scope and Lexical Scope

原贴地址:http://pierrespring.com/2010/05/11/function-scope-and-lexical-scoping/

个人觉得写得不错,简单地搬运,如有错误,请指正。

Wikipedia defines Scope as follows:

  Tipically, scope is used to define the extent of information hiding--that is, the visibility or accessibility of

  variables from diefferent parts of the program.

  作用域是用来定义信息隐藏的深度--程序中,其它地方对某个部分中的变量的可访问性。

In JavaScript we have Function Scope and Lexical Scope.

Function Scope means that any variable which is defined within a function is visible within that entire function.

This is quite different form Block Scope, in which a variable scope is limited by the block a variable is declared in.

Function Scope 是指,任何在函数内部定义的变量是对整个函数都可见的。

时间: 2024-12-07 17:19:25

JavaScript的Function Scope and Lexical Scope的相关文章

JavaScript Nested Function 的时空和身份属性

JavaScript 的function 不仅仅是一等公民,简直就是特殊公民.它有许多独特的特征: 1) 它是object,可以存储,传递,附加属性. 2) 它可以有lexical closure, 是事件处理,和OOP encapsulation 的方便工具. 3) 它可以匿名,然后通过变量名或者依附于一个object 的 property来被调用 4) 它有多种“被定义”方式:可以通过function statement, function expression, new, Function

AngularJS 全局scope与Isolate scope通信

在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope通信掌握的不够透视,这里对全局scope 和 directive本地scope的使用做一个总结. 一.scope作用域 1.AngularJS中,子作用域一般都会通过JavaScript原型继承机制继承其父作用域的属性和方法.但有一个例外:在directive中使用scope: { ... },这种方式创建的作用域是一个独立的"Isolate"作用域,它也

秒味课堂Angular js笔记------$scope.$watch和$scope.$apply

$scope.$watch(watchFn , watchAction , deepWatch) 其中,watchFn是带有angular表达式或函数字符串: watchAction是一个函数或者表达式,当watchFn发生变化时调用,如果是函数,其签名是function(newValue, oldValue, scope): deepWatch如果是ture,则会检查被监控对象的每一个属性是否发生了变化. <script type="application/javascript"

AngularJS 全局scope与指令 scope通信

在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope通信掌握的不够透彻,这里对全局scope 和 directive本地scope的使用做一个总结. 一.scope作用域 1.AngularJS中,子作用域一般都会通过JavaScript原型继承机制继承其父作用域的属性和方法.但有一个例外:在directive中使用scope: { ... },这种方式创建的作用域是一个独立的"Isolate"作用域,它也

javascript的Function 和其 Arguments

http://shengren-wang.iteye.com/blog/1343256 javascript的Function属性:1.Arguments对象2.caller 对调用单前函数的Function的引用,如果是顶层代码调用, 则返回null(firefox返回undefined). 注:只有在代码执行时才有意义3.length 声明函数是指定的命名参数的个数(函数定义是,定义参数的个数)4.prototype 一个对象,用于构造函数,这个对象定义的属性和方法 由构造函数创建的所有对象

JavaScript获取Function的名字

如何获取JavaScript中Function的名字是一个很基本的问题.可以通过将function转化成字符串,用substring取它的名字,或者使用ECMAScript 6中的Function.name的支持.此属性只有在IE下有可能不兼容.详见MDN. 关于从字符串中获得其名字的方法如下 (转自stackoverflow): function functionName(fun) { var ret = fun.toString(); ret = ret.substr('function '

Javascript使用function创建类的两种方法

1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i=0; return i; } this.Func2=function() { _privateFunc(); } //类中的私有方法,供公共方法调用 function _privateFunc() { return 0; ] } CMyFunc myFunc=new CMyFunc(); 使用:其它

javaScript之function定义

背景知识 函数定义 在javaScript中,function的定义有3种: 1.匿名定义                function(){} 2.非匿名定义                function fn(){}                fn = new Function(); 触发函数执行 对于匿名函数:                        (function(){})();       //执行一个匿名函数                        var f

javascript 之Function对象的apply(),call(),bind(),方法和arguments,caller,length属性

注:这篇文章原文:http://www.jb51.net/article/30883.htm 自己作为学习,重新写写. 一.写在前面的话 前端javascript编程还只是略懂皮毛,DOM知道一点,jquey会用一点点,深知夯实基础,了解前端的系统的知识对于web开发(自己主要做的是PHP后台的开发)的重要.固然,要用什么,就查什么(现学现卖)很合理,但对于长远来讲,只是在隔靴捎痒,很难有实际的作为. 故,痛定思痛,应该对web前端,尤其是 javascript开发(过程式-->面向对象-->