相信很多初学者对与javascript中的执行环境与作用域链不能很好的理解,这里,我会按照自己的理解同大家一起分享。一般情况下,我们把执行环境分为全局执行环境和局部执行环境,其中局部执行环境我们又可以称之为函数执行环境。那么究竟什么使执行环境呢?通俗的说,执行环境即为代码执行时所处的环境。我们下来看一看如下代码,再进一步分析之。<script><br>var name="zhuzhenwei"; function changeName(){if (name=="zhuzhenwei")...
作用域(Scoping)对于Javascript初学者来说,一个最迷惑的地方就是作用域;事实上,不光是初学者。我就见过一些有经验的javascript程序员,但他们对scope理解不深。javascript作用域之所以迷惑,是因为它程序语法本身长的像C家族的语言。我对作用域的理解是只会对某个范围产生作用,而不会对外产生影响的封闭空间。在这样的一些空间里,外部不能访问内部变量,但内部可以访问外部变量。c语言的变量分为全局变量和局部变量,全局变...
首先,我们要知道执行环境和作用域是两个完全不同的概念。函数的每次调用都有与之紧密相关的作用域和执行环境。从根本上来说,作用域是基于函数的,而执行环境是基于对象的(例如:全局执行环境即window对象)。换句话说,作用域涉及到所被调用函数中的变量访问,并且不同的调用场景是不一样的。执行环境始终是this关键字的值,它是拥有当前所执行代码的对象的引用。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和...
分析: 无论是强类型语言c#、c++、java等语言,还是弱类型语言如Javascript,所有变量可以抽象为两种类型,即局部变量和全局变量。 全局变量:整个作用域可见。 局部变量:局部可见,退出作用域,就被GC销毁,回收空间。 Code分析://局部变量 function PartVary() {var n = 10; //表示局部变量,外部不可访问 }PartVary(); alert(n);//error <br> //全局变量 function AllVary() {n = 10 /...
作为一个程序员, 你可能早已经习惯于面向对象语言中指代当前对象的引用(或者指针), 如的c++中的this或者 python 中的self,当然具有OO属性( javascript 其实更多的是一种所谓的函数式语言)的 javascript 同样, 它也具有引用当前属性的对象的指针(或者引用), 也就是this关键字。为了理解this关键字,如果你只想记住一句话,那应该是 this关键字总是指向当前函数的所有者对象(执行空间), 至于这句话如何理解, 可以参见...
? 作用域o 全局作用域o 局部作用域? 作用域链? 执行上下文? 活动对象? 闭包? 闭包优化 JavaScript中出现了一个以前没学过的概念——闭包。何为闭包?从表面理解即封闭的包,与作用域有关。所以,说闭包以前先说说作用域。作用域(scope) 通常来说一段程序代码中使用的变量和函数并不总是可用的,限定其可用性的范围即作用域,作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。 全局作用...
当在函数内部定义变量时,一定要用var定义,否则该变量将是全局变量。实例: function fn1{ ? ? ? ?b=2; ? ?alert(b); }此时,如果页面执行了fn1函数,则b变量将成为全局变量。
引用类型 引用类型主要包括:Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型等等。 引用类型使用时,需要从它们身上生成一个对象(实例)。也就是说,引用类型相当于一个模版,当我们想要用某个引用类型的时候,就需要用这个模版来生成一个对象来使用,所以引用类型有时候也称作对象定义。 例如,我们需要生成一个 person 对象,来定义某人的个人信息和行为,那么我们就需要依赖 Object 类型:var person = new ...
每一种语言都有变量的概念,变量是用来存储信息的一个元素。比如下面这个函数: 代码如下: function Student(name,age,from) { this.name = name; this.age = age; this.from = from; this.ToString = function() { return "my information is name: "+this.name+",age : "+this.age+", from :" +this.from; } } Student类有三个变量,分别为name(名字),age(年龄),from(籍贯),这三个变量构成了描述...
JS的作用域是个比较复杂的东西 JS的作用域是静态的,当定义一个function时,function的作用域是定义function时所在的作用域,而不是调用function时所在的作用域。 当调用一个function时,就会创建一个新的作用域,在这个作用域中用var定义的变量就是局部变量,一般情况下function执行结束之后这个调用时所创建的作用域就会被系统回收。 在function圈套定义时,如果里面定义的function被保存了下来(如:赋给一个全局变量)。那么它...
都不记得是什么时候看的JScript的语法教程了,里面说在声明变量时忽略var关键字是完全合法的。当时也因为觉得JavaScript是loosely-typed的语言,所以var可能真的就是个摆设。但是事实常常又证明想当然的结果是不可靠的。 看看下面这几个例子的结果就知道问题了: No.1 var var00 = 0; document.write(var00 + ' '); var var01 = 1; function foo() { document.write(var01); var var01 = 1; } foo(); ...
1.关于prototype:这里prototype是javascript的一个特性,不是那个有名的prototype框架: var string="hello world"; try{ alert(string.phone()); }catch(e){alert(e);} String.prototype.phone=function() { return "159-10957151"; } alert(string.phone()); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]2.关于变量作用域,和IE,firefox对js的不同处理,这里有几个例子,有几个是原来从别处看到的记的笔记,有的是我自己...
作用域JavaScript 的变量作用域是按照函数划分的,为了快速的了解它的特性,我们通过实例来进行演示。实例一: <script type="text/javascript"> var i = 1; // 弹出内容为 1 true 的提示框 alert(window.i + + (window.i == i)); </script>分析: 在全局定义的变量其实就是 window 对象的属性。 上面的例子可以看到,我们定义全局变量的同时,window 对象会产生一个相应的属性,如何让我们的代码避免产生这个属性呢,看下面...
公用、受保护和私有作用域 在传统的面向对象程序设计中,主要关注于公用和私有作用域。公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。而私有作用域中的属性只能在对象内部访问,即对于外部世界来说,这些属性并不存在。这也意味着如果类定义了私有属性和方法,则它的子类也不能访问这些属性和方法。 最近,另一种作用域流行起来,即受保护作用域。虽然在不同语言中,受保护作用域的...
1、背景 Javascript中的回调函数,相信大家都不陌生,最明显的例子是做Ajax请求时,提供的回调函数, 实际上DOM节点的事件处理方法(onclick,ondblclick等)也是回调函数。 在使用DWR的时候,回调函数可以作为第一个或者最后一个参数出现,如: JScript code function callBack(result){ } myDwrService.doSomething(param1,param2,callBack);//DWR的推荐方式 //或者 myDwrService.doSomething(callBack,param1,param2); 2、问题描...