Javascript的定义阶段和执行阶段以及变量作用域的概念
所谓定义:比如:用var关键字定义变量,用function关键字定义函数(定义函数,就是定义一个新的作用域),如果不用var关键字来定义变量,则这些变量就是全局变量。
所谓执行:比如:用new关键字创建新的对象,用=赋值,用()来执行函数等等。
Javascript运行的顺序是:先定义后执行。定义的时候,确定变量的作用域(所谓变量的作用域,即定义变量可以在哪里被访问到);执行的时候,会有一个执行上下文(this变量)。
下面的例子解释了这些概念:
* 全局作用域:
<script type="text/javascript">
a = 10;
var b = 20;
function ABC(){
alert("good!");
}
alert(a); //10
alert(b); //20
alert(ABC);//函数代码
alert(window.a);//10
alert(window.b);//20
alert(window.ABC);//函数代码
ABC();//good!
window.ABC();//good!
function H1(){
alert(b); //在这个函数内部也可以访问,因为b变量是全局的
}
H1();//20
function H2(){
test = "hello"; //这里,没有用var关键字,定义的是一个全局变量
}
H2();
alert(test); // hello
</script>
|
总是会有一个window对象,它就是全局的,在javascript任何函数外部定义的变量、函数,或者在函数内部不用var关键字定义的变量,都是全局变量,它的作用域是全局的!
* 定义和执行的先后顺序问题:
<script type="text/javascript">
alert(Hello); //这里将弹出函数的定义信息
Hello(); // good!
function Hello(){
alert("good!");
}
</script>
|
上述代码的执行结果表明,用function定义的变量Hello(它是一个全局变量),早于执行过程。执行是一行一行代码往下执行,定义早于执行,定义就是确定变量及其作用域。
<script type="text/javascript">
alert(a);
alert(b);
alert(c);
var a = "a";
function a(){}
function b(){}
var b = "b";
var c = "c";
var c = function(){}
alert(a);
alert(b);
alert(c);
</script>
|
上述代码的结果,如果你能够完全正确的回答出来的话,那么证明你理解了定义和执行先后的概念!
* 如何创建新的作用域? - 可以利用function来创建新的作用域
<script type="text/javascript">
alert(H1); //将得到函数的定义
alert(H2); //将出错,H2被定义到H1的内部,所以在H1的外部看不到这个变量
H1(); //可以执行,因为在这里能够看到H1
function H1(){
alert(H2); //将得到函数的定义
alert(H3); //将出错,H3被定义到H2的内部,所以在H2的外部看不到这个变量
H2(); //可以执行,因为在这里可以看到H2
function H2(){
alert(H3); //将得到函数的定义
function H3(){
}
}
}
</script>
|
<script type="text/javascript">
(function(){
function hello(){ //这个定义,能够覆盖全局定义
alert("ok");
}
hello(); //调用的是内部函数,因为在本命名空间中,它代表的就是内部函数定义
})(); //定义一个函数(通常是一个匿名函数),并立刻执行,可以将代码进行封装,避免代码中的定义污染全局命名空间
function hello(){ //全局函数
alert("hh");
}
hello();
</script>
|
定义一个匿名函数,并执行,可以将代码封装到某个作用域中执行,这样可以避免污染全局命名空间!
分享到:
相关推荐
虽然通常情况下,开发者将其视为一种基于函数的语言,仅用来处理一些简单的前端数据验证或实现基本的页面动态效果,但事实上,JavaScript 具有强大的面向对象编程能力。这主要体现在它支持面向对象编程的基本特征:...
JavaScript是一种解释型、跨平台的编程语言,主要应用于Web浏览器,用于增加网页的动态功能,如响应用户交互、操作DOM(文档对象模型)、执行异步通信(Ajax)等。JavaScript是Web开发中的基石,而ExtJS则是在这个...
在JavaScript的世界里,面向对象(Object-Oriented Programming, OOP)是一种常用的设计模式,它允许我们通过类和对象来组织代码,实现代码的复用和模块化。本篇文章将探讨EXTJS框架中的面向对象机制,特别是继承的...
了解并掌握这些Ext的面向对象特性,有助于编写更高效、结构化的JavaScript代码,特别是在构建复杂的Web应用程序时。在实际的`ExtTest`项目中,这些概念会被广泛运用,以创建可复用、可维护的组件和模块。
EXTJS 是一个基于 JavaScript 的富客户端框架,它提供了强大的组件模型和面向对象的编程方式,使得开发者能够构建复杂的 Web 应用程序。面向对象编程(Object-Oriented Programming, OOP)是EXTJS的核心特性之一,...
Ext JS是一个流行的JavaScript库,用于构建桌面和移动应用程序的用户界面。它提供了一种面向对象的编程模型,使得开发者可以方便地管理和操作组件、数据存储以及事件处理。 在Ext JS中,对象通常指的是各种UI组件...
EXT2.0、EXT4.0 和 JS 是计算机科学领域中的三个重要概念,它们分别代表了Linux文件系统、JavaScript编程语言以及JavaScript库EXT JS的相关版本。 EXT2.0是Linux操作系统下的一种文件系统,它是EXT(第二扩展文件...
对于已经具备面向对象编程基础的开发者来说,学习Ext可以帮助他们快速创建功能强大且具有吸引力的Web应用。 首先,理解Ext的核心概念至关重要。Ext是一个Ajax框架,其主要目标是提升Web应用的交互性和用户体验。它...
1. **EXT类体系**:EXT基于面向对象的编程理念,采用类继承的方式来组织代码。所有EXT组件都继承自一个基础类,如Ext.Component,通过扩展和组合这些基类来创建特定的UI元素。 2. **静态方法的概念**:静态方法是不...
Ext框架是基于JavaScript的UI库,它为Web应用程序提供了丰富的组件和交互效果。在深入探讨Ext框架结构之前,我们先来理解一下JavaScript框架的基本概念。一个JavaScript框架是用于简化JavaScript开发的一系列预定义...
JavaScript是EXT JS的基石,因此掌握JavaScript的基本语法和面向对象编程是使用EXT的前提。EXT JS 1.1虽然较为古老,但仍然包含了许多现代前端开发的理念,如MVC(Model-View-Controller)架构,这种架构模式有助于...
综上所述,文章深入探讨了基于Ext的单页系统设计方法,强调了面向对象编程思想在客户端JavaScript中的应用,以及如何利用Ext的组件化和动态数据加载特性优化用户体验。通过这种方式,开发者能够构建出高效、易于维护...
JavaScript是一种基于对象的编程语言,但并非严格意义上的面向对象语言,因为它仅实现了封装,缺乏继承和多态。JavaScript中的对象是关键元素,几乎无处不在,甚至函数本身也被视为对象。对象可以理解为可变的键控...
EXT基于JavaScript,所以理解JavaScript语法和面向对象编程概念是非常必要的。开发者可能会学到如何创建EXT组件、布局管理、事件处理等。 总的来说,这个“ext/ajax开发资料”应包含EXT库的Ajax使用方法,以及可能...
面向对象编程** JavaScript支持类(ES6引入)和原型链实现面向对象特性。可以创建对象、定义构造函数、使用原型属性和方法。 **13. JavaScript Date对象** Date对象用于处理日期和时间,可以创建、比较和操作日期...
总结来说,本压缩包提供的资料专注于Ext类的构造方法,这涉及到Ext JS的核心编程概念,包括类的继承、构造函数的使用、配置对象、组件生命周期以及代码重用策略。掌握这些知识将有助于开发者更深入地理解和使用Ext ...
通过对这些PPT的学习,你将掌握EXT的基本用法,包括DOM操作、事件处理、组件系统和面向对象编程。EXT结合Ajax和Java,可以构建出高性能、用户友好的Web应用,适用于各种业务场景。深入理解并熟练运用EXT,能提升你的...
在IT行业中,"EXT"通常指的是ExtJS,这是一个基于JavaScript的UI库,用于构建富客户端应用程序。它提供了大量的组件和工具,使得开发者可以创建出功能丰富的、交互性强的Web应用。"传参"则涉及到函数调用时传递参数...
总结来说,"Ext继承和扩展写的例子"这个主题,涉及到的核心知识点包括JavaScript的面向对象编程,Ext JS库的使用,特别是其组件模型和继承机制。通过学习这个例子,开发者可以深入理解如何利用这些特性创建可复用、...