开始读《JAVASCRIPT高级程序设计》
第2章 ECMAScript基础
JavaScript实质上是ECMAScript在web环境中的实现,还有其他实现(如Flash的ActionScript等)。因此了解基本的ECMAScript相当于掌握javascript的基础。
1。ECMAScript的基础概念:
1)区分大小写
2)变量是弱类型(解释型语言的基本特点)
3)每行结尾的分号可有可无(与java不同)
4)注释的形式与java相同(单行或者块注释)
5)大括号代表代码块{}
2。变量,使用var定义。如var test="test1"
当然,变量是弱类型,并且可以不被初始化而定义
var test="test1"
var test2;
test=1;
建议采用匈牙利类型标记法来命名变量。
3.关键字和保留字(略)
4。原始值和引用值
与java类似,变量分成原始类型与引用类型两类:
1)原始值存储在stack中
2)引用值是存储在heap中的对象,存储在变量处的是一个point
5。原始类型:
1)ECMAScript有5种原始类型:Undefined、Null、Boolean、Number和String。可以使用typeof来判断一个值是否在某类型的范围内。如:
var s="test";
alert(typeof s) //输出"string"
注意:type null返回object,因为null被认为是对象的占位符。
2)Undefined类型
当变量未初始化时,该变量的默认值就是undefined。但是,undefined并不同于未定义的值。但是,typeof并不区分两者,比如:
var temp1;
alert(typeof temp1); //未初始化,输出undefined
alert(typeof temp2); //未定义,也是undefined 函数无返回值,返回的也是undefined
3)Null类型
Null只有一个值,也就是null。Undefined本质上是从Null派生来的,因此两者相等:
alert(null==undefined); //输出true
但两者意义不同,Undefined表示变量未被初始化之前的值,而Null则表示尚未存在的对象,也就是对象的占位符。
4)Boolean类型
Boolean有两个值:true,false
5)Number类型
Number类型很有趣,Number可以表示32位的数字,也可以表示64位的浮点数,以0开头的数字当成八进制,以ox开头即为十六进制。有趣的地方在于所有数字运算结果都是返回十进制!
在ECMAScript中,浮点数的计算本质上是存储的是字符串。
Number类型的大小在Number.MAX_VALUE和Number.MIN_VALUE之间
无穷大用Infinity表示,如你所见,Number.MAX_VALUE就是Infinity,而Number.MIN_VALUE就是-Infinity,可以通过isFinite(n)来判断n是否超过界限
最后,还有一个特殊值是NaN,表示Not a Number(非数),非数产生在类型转换失败时,注意,它与自身不相当:alert(NaN==NaN); //输出false
不推荐使用NaN,我们可以通过isNaN()来判断是否是非数(很常用咯)
6) String类型
String是唯一没有固定大小的原始类型,可以存储0或者多个Unicode字符。与java不同的是,可以使用双引好和单引号来声明字符:
var s1="test1";
var s2='test2';
常见转义符与其他语言相同。
6。类型转换
1)转换成字符串:
Boolean,String和Number类型本质上都是伪对象,他们都有toString()方法(与java相同)
Number类型的toString()有两种模式:
toString(),返回数字的十进制
toString(n),返回n进制的字符串(n为2,8,10,16)
2)转换成数字:
两个方法:parseInt()和parseFloat()方法。用法略过,需要注意的是parseInt如果没指定基数,会把以0开始的解析为8进制。parseFloat反而不会。
3)强制类型转换:
3种强制类型转换:
String(value);
Boolean(value);
Number(value);
规则如下:
(1)String(value)与toString()基本一样,除了对null或者undefined的转换之外,如:
var s1=String(null); //通过
var oNull=null;
var s2=oNull.toString(); //报错
(2)Boolean(value),如果该value是空字符串、数字0、undefined或者null,返回false,其他返回true
(3)Number()与parseInt和parseFloat基本相同,不同的是Number()将转换整体,如果转换失败返回NaN。如:
Number(false) ;// 0
Number(true); // 1
Number(new Object()); // NaN
Number('5.6.7'); // NaN 7。引用类型:
1)Object类:类似于java中java.lang.Object的地位和作用,js中所有类都继承此类而来。它包含下面的属性:
(1)Constructor——对创建该对象函数的引用
(2)Prototype——对该对象对象原型的引用,对所有的类,它将返回一个Object实例
(3)HasOwnProperty(property)——判断是否有某个属性
(4)IsPropertOf(object)——判断该对象是否为另一个对象的原型
(5)PropertyIsEnumerable(property)——判断对象的属性是否可以枚举
(6)ToString()——返回对象的原始字符串表示
(7)ValueOf()——返回最适合该对象的原始值,对于许多类,它的结果与ToString()相同
2)Boolean类,尽量避免使用,注意的是,在Boolean表达式中,所有的值将被自动转化为true,所以下面的输出:
var oFalseObject=new Boolean(false);
alert(oFalseObject&&true); //输出true,而不是false
3) Number类,是Number原始类型的引用类型,应该少使用此类,尽量使用原始类型。需要注意3个方法:
(1)toFixed():返回具有指定位数小数的字符串,如:
var oNumberObject=new Number(99);
alert(oNumberObject.toFixed(2)); // 输出99.00
(2) toExponential(),返回用科学记数法表示的数字的字符串形式,如:
var oNumberObject=new Number(99);
alert(oNumberObject.toExponential(1)); //输出9.9e+1
(3)toPrecision(),对数进行舍入,返回尽可能接近真实值的数字,如:
var oNumberObject=new Number(99);
alert(oNumberObject.toPrecision(3)); //输出99.0
注意,这3个方法都将进行四舍五入操作
4)String类,是String原始类型的对象,常见方法见下面的例子:
var oStringObject=new String("hello world");
alert(oStringObject.length); //输出11
alert(oStringObject.toString()==oStringObject.valueOf()); //输出true
alert(oStringObject.charAt(1)); //输出e
alert(oStringObject.charCodeAt(1)); //输出e的字符代码:101
alert(oStringObject.concat(",china")); //输出hello world,china
alert(oStringObject.indexOf("e")); //输出1
alert(oStringObject.lastIndexOf("o")); //输出7
var oStringObject1=new String("yellow");
var oStringObject2=new String("brick");
var iResult=oStringObject1.localeCompare(oStringObject2); //根据本地比较
if(iResult>0){
alert("oStringObject1在oStringObject2后面");
}else if(iResult<0){
alert("oStringObject1在oStringObject2前面");
}else
alert("oStringObject1和oStringObject2相同");
alert(oStringObject.substring(3,7)); //输出"lo w"
alert(oStringObject.slice(3,7)); //输出"lo w"
alert(oStringObject.toUpperCase());
alert(oStringObject.toLowerCase());
alert("中国".toLocaleLowerCase()); 8.操作符和语句,省略大部分操作符的介绍和控制语句,与其他语言(java,ruby)基本相同,需要注意的摘抄如下:
1)delete操作符:用于删除对以前定义的对象属性或者方法的引用,如:
var o=new Object();
o.name="dennis";
alert(o.name); //输出dennis
delete o.name; //解除引用
alert(o.name); //输出undifined 2)for ... in语句,严格的枚举语句,用于枚举对象属性
3)switch可以作用于字符串,而不仅仅是整数
4)不支持重载(与ruby相同),可以通过arguments对象来变相实现
5)在ECMAScript中,函数其实是完整一个对象(与ruby相同,或者说动态语言的基本特点),可以采用:
var function_name=new Function(arg1,arg2,arg3,...,function_body);
来定义函数(速度比普通方法慢)。函数可以作为参数传递,函数的length属性返回此函数的参数个数
6)ECMAScript的闭包概念与其他动态语言的概念很不同,我还不大理解,过段时间好好研究一下。(写入备忘录)
分享到:
相关推荐
### ECMAScript基础知识详解 #### 一、ECMAScript简介 ECMAScript 是 JavaScript 的核心规范,由欧洲计算机制造商协会(ECMA International)制定。它规定了浏览器等环境执行脚本语言的基础语法和数据类型等内容。...
### ECMAscript基础知识点详解 #### 一、ECMAscript概述 ECMAscript,通常简称ES,是一种脚本语言的标准规范,由欧洲计算机制造商协会(ECMA International)制定,旨在提供一种标准的脚本语言语法和功能,用于...
在深入探讨JavaScript高级编程技术之前,我们首先需要了解ECMAScript的基础知识。...有了扎实的ECMAScript基础,我们才能在前端开发、服务器端编程甚至桌面应用开发中运用JavaScript实现更复杂的业务逻辑。
ECMAScript 解读 ECMAScript 是一种脚本语言标准,由 Ecma ...掌握 ECMAScript 的基础知识是学习 JavaScript 高级程序设计的基础,理解 ECMAScript 可以帮助开发者更好地理解 JavaScript 语言,提高开发效率和质量。
### ECMAScript基础知识点概述 #### 一、ECMAScript简介 ECMAScript(简称ES)是一种被标准化的脚本语言规范,最初由Netscape公司提交至欧洲计算机制造商协会(ECMA International),并最终形成了国际标准ECMA-262...
ECMAScript基础部分会介绍JavaScript的基本语法,包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组和符号)、以及如何在代码中进行注释。 2. **值与类型**: 这...
第2章 ECMAScript基础 第3章 对象基础 第4章 继承 第5章 浏览器中的JavaScript 第6章 DOM基础 第7章 正则表达式 第8章 检测浏览器和操作系统 第9章 事件 第10章 高级DOM技术 第11章 表单和数据完整性 第12章 表格...
由于我对JavaScript和薄弱,所以在看Asp.net Ajax类库的同时也翻出了ECMAScript顺便学习学习。在.NET中所有类都是继承自Object,同样在JS中也一样说有都继承Object,因此如果对Object进行了扩展,那所有继承Object类...
JavaScript在前端开发中的重要性体现在三个方面:源代码开发阶段讲解JavaScript基础部分,涉及三个核心知识点:ECMAScript基础知识、BOM和DOM;涉及两个核心技能:表单验证和常见客户端网页特效制作。 课程思政元素...
ECMAScript 手册是关于ECMAScript语言的权威指南,该语言规范是JavaScript和JScript等编程语言的基础。ECMAScript由Brendan Eich在Netscape公司发明,并首次应用于Navigator 2.0浏览器,后来被所有Netscape和从...
通过学习ECMAScript的基础语法和特性,开发者可以更好地理解和应用QML。此外,ECMAScript的灵活性和强大的功能也为QML应用程序带来了无限的可能性。无论是对于初学者还是经验丰富的开发者来说,深入掌握ECMAScript都...
ECMAScript 定义了语言的基础结构,包括但不限于: - **语法**:定义了变量声明、表达式、语句等的基本规则。 - **类型**:支持原始类型(如 number、string、boolean)和引用类型(如 object)。 - **语句**:if ...
#### 三、ECMAScript基础知识 - **ECMAScript语法**:虽然Java和ECMAScript有一些相似之处,但它们也有很多差异。ECMAScript语法包括变量声明、关键字、保留字、值类型等。 - **变量声明与命名**:学习如何声明变量...
【ECMAScript基础】 ECMAScript是JavaScript的基础,定义了语言的语法和基本对象。在实现手风琴菜单时,我们可能会用到ECMAScript的变量声明、函数、条件语句、循环以及事件处理等特性。例如,`if`语句用于判断当前...
2009年发布的ECMAScript 5.1版本是JavaScript的一个关键里程碑,它在ECMAScript 3的基础上进行了诸多改进和扩展,为开发者提供了更强大、更稳定的编程环境。本说明将深入探讨ECMAScript 5.1的主要特性和关键知识点。...
总结来说,"基于jQuery的在线学习平台设计与实现"是一个全面展示前端开发技术的项目,它涵盖了DOM操作、事件处理、动画、Ajax交互、ECMAScript基础等多个重要知识点。通过这个项目,开发者不仅可以提升jQuery的熟练...
在本文中,我们将深入探讨如何使用jQuery来实现一个自定义的单选按钮(radio)组件,同时也会涉及相关的JavaScript和ECMAScript基础知识。 ### 1. jQuery基础 首先,我们需要了解jQuery的基本用法。jQuery通过 `$`...
ECMAScript 6(ES6),是JavaScript语言的下一代标准,于2015年6月正式发布。它由ECMA国际标准化组织制定,...通过学习和掌握ES6,开发者可以更高效地编写现代JavaScript代码,并为未来可能的ECMAScript标准奠定基础。