锁定老帖子 主题:ECMAScript 基础
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-06-13
刚刚开始JavaScript和Ajax学习,这是学习过程中的笔记,请各位DX指教:)
JavaScript 的核心之一 ECMAScript 的语言特性和 Java 、 C 、 Perl 都有许多相似之处,其中不少特性都是从这些语言借鉴而来,同时它们之间也存在许多差异。下面列举一些 ECMAScript 的基本特性。 --和 Java 一样, ECMAScript 区分大小写,注释的格式相同,通过 {} 确定代码块,原始数据类型存储在堆栈,对象的引用存储在堆中; --ECMAScript 是一种松散的语言, ECMAScript 通过 var 操作符声明变量,并且不限类型,例如 var n = 25 ,那么 n 就是数字类型, var n = “string” ,那么 n 就是 String 类型; --在每一行代码后,可以不写分号, ECMAScript 自动认为该行的末尾为该行代码的最后; ECMAScript 中的变量可以不用初始化,在幕后系统将自动完成初始化操作; --同一变量可以赋予不同类型的数据;变量的第一个字符只能是字母、下划线或 $ ,其他的字符可以是下划线、 $ 、或任意的字母、数字、字符; --和其他语言一样,变量最好遵循驼峰书写法,或 Pascal 表示法、或匈牙利表示法; --和大多数语言不同的是, ECMAScript 变量在使用之前可以不必声明,系统会自动将该变量声明为全局变量,例如 var m = “Good”; n = m + “Morning”; alert(n) 输出结构是“ Good Morning ”; --在大多数语言里, String 是对象,在 ECMAScript 中却是原始数据类型。 原文地址:http://www.blogjava.net/flyingis/archive/2006/06/13/52484.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-06-13
ECMAScript 原始数据类型有五种: Undefined 、 Null 、 Boolean 、 Number 、 String 。
typeof— 判断变量和值的数据类型,通常有 undefined 、 boolean 、 number 、 string 、 object 五种类型。 Undefined— 当变量被声明但没有初始化,或函数没有明确返回一个值的时候,该变量或函数即为 Undefined 类型。 Null—undefined 是 null 的一种派生,当代表一个对象的值不存在时,该对象返回 null 。 Boolean— 包含两个值, true and false , false 不等于 0 ,但 0 可以转换为 false 。 Number— 可以定义 32 位整型数据或 64 位浮点型数据。定义数字类型变量时,在数字前加 0 即为八进制,加 0x 为十六进制,它们计算后返回的结果统一为十进制。通过 var f = 1.0 可以定义一个浮点类型变量,有意思的是,当 f 被用于计算之前,它实际是以 String 类型存储的。当浮点类型数据很大或很小时(可以前后移动六位),将使用 E 表示法来表示浮点数据,最大可以存储 17 位数据。另外, isFinite() 方法可以判断一个数值是否有限, isNaN() 方法可以判断一个数据是非数字类型。 String—String 在 ECMAScript 中是原始数据类型,并且是唯一没有空间大小限制的数据类型。和 Java 不同的是, var s = “javascript” 和 var s = ‘javascript’ 均是合法的表示方法。 |
|
返回顶楼 | |
发表时间:2006-06-13
在不同数据类型之间转换是任何一门编程语言的一个重要特性, ECMAScript 提供了一系列简单的方法来实现数据的转换,大多数数据类型都提供了简单的转换方法,对于复杂的转换则有一些全局方法来完成,不管是哪一种方法, ECMAScript 中数据转换都非常简单。
Boolean 、 number 和 string 数据类型是原始数据类型,但它们同时是伪对象(在 ECMAScript 中伪对象到底该怎么解释,运行机制如何还不清楚?有人知道请给予解答 ),拥有自己的属性和方法,可以通过 toString() 方法来实现 string 类型的转换。 ECMAScript 定义所有的对象,不管是伪对象还是真实的对象,都可以实现 toString() 方法, string 被列为伪对象的行列,自然也拥有 toString() 方法。将数字类型数据转换为 string 的时候,可以在 toString() 方法中加入 2 、 8 、 16 参数,来实现不同进制的数据输出,例如 var n = 10; alert(n.toString(2)) 输出为 1010 , alert(n.toString(8)) 输出为 12 , n.toString() 和 n.toString(10) 相同。 ECMAScript 提供了两种方法来实现 string 类型转化为数字类型的方法: parseInt() 和 parseFloat() 。其他类型转换将会返回 NaN ( Not a Number )。 |
|
返回顶楼 | |
发表时间:2006-06-13
ECMAScript 数据类型的转换通常可以通过三个方法来实现: Boolean(value) 、 Number(value) 和 String(value) ,这样通常会产生一些非预期的结果。
Boolean var b1 = Boolean(“”); //false – empty string var b2 = Boolean(“hi”); //true – non-empty string var b3 = Boolean(100); //true – non-zero number var b4 = Boolean(null); //false - null var b5 = Boolean(0); //false - zero var b6 = Boolean(new Object()); //true – object Number Number(false) 0 Number(true) 1 Number(undefined) NaN Number(null) 0 Number(“5.5”) 5.5 Number(“56”) 56 Number(“5.6.7”) NaN Number(new Object()) NaN Number(100) 100 String String() 能实现所有类型数据的直接转换,和使用 toString() 不同的是, String() 能够将 null 或 undefined 数据转换为 string 。 待续~~~ |
|
返回顶楼 | |
发表时间:2006-06-14
这种哪里都能看到的垃圾就麻烦不要贴上来了
|
|
返回顶楼 | |
发表时间:2006-06-14
box 写道 这种哪里都能看到的垃圾就麻烦不要贴上来了
有时候一些BUG就是因为这些“垃圾”没有处理好而存在。 最开始就声明了这是个人的学习笔记,高手有兴趣就随意看看,不对之处就给予赐教,人总要从最基础的学起。在这里帖基础的东西不妥,但这是个过程,文中也注明了待续,成为一个精简的基础系列我想也可以吧,如果实在不允许,管理员可以根据版规直接删除,我没意见,就算你是高手,但请不要在这里用“垃圾”来乱评别人的帖,注意置顶删帖规则中的“在论坛污言秽语,攻击他人的删除用户ID,并且封锁IP地址 ”。 |
|
返回顶楼 | |
发表时间:2006-06-14
box 写道 这种哪里都能看到的垃圾就麻烦不要贴上来了
box,这样属于典型的攻击,请以后注意收敛。 |
|
返回顶楼 | |
发表时间:2006-06-14
flyingis 写道 box 写道 这种哪里都能看到的垃圾就麻烦不要贴上来了
有时候一些BUG就是因为这些“垃圾”没有处理好而存在。 最开始就声明了这是个人的学习笔记,高手有兴趣就随意看看,不对之处就给予赐教,人总要从最基础的学起。在这里帖基础的东西不妥,但这是个过程,文中也注明了待续,成为一个精简的基础系列我想也可以吧,如果实在不允许,管理员可以根据版规直接删除,我没意见,就算你是高手,但请不要在这里用“垃圾”来乱评别人的帖,注意置顶删帖规则中的“在论坛污言秽语,攻击他人的删除用户ID,并且封锁IP地址 ”。 抱歉,我过分了。 |
|
返回顶楼 | |
发表时间:2006-06-14
To box:
写的是比较基础,希望以后能多交流。 |
|
返回顶楼 | |
发表时间:2006-06-14
ECMAScript实际上并没有传统意义上的类,只是通过定义对象来等同于其他语言中的类,这一点我还比较含糊,以后可能会明白,在文中还是以“类”来说明。
var ob = new Object(); 以上定义了一个Object对象的实例,这种语法和Java比较类似。当有参数的时候需要括号来引用,当不存在参数时,括号可以去掉。由于ECMAScript语言比较松散,不管是前面所属的基础语法,还是后面将提到的语法知识,我们都应该尽量按照一定的书写规范来约定自己的代码格式,而不应充分发挥语言松散的特点。 Object类 Object类和Java里的java.lang.Object类比较相似,它是ECMAScript中其他所有类的基类,它具有如下属性: constructor—建立对象的函数的一个引用,对于Object类而言,该引用指向本地Object()方法。 prototype—对象里prototype对象的一个引用值。 Object类拥有的方法: hasOwnProperty(property)—判断property属性是否存在于对象中,property数据类型为string; isPrototypeOf(object)—判断一个对象是否是另一对象的prototype; propertyIsEnumerable(property)—判断所给出的属性能否使用for语句列举出来; toString()—返回对象的原始类型string; valueOf()—返回对象合适的原始值,对于多数类而言,返回的值和toString()相同。 Object类的每一个属性和方法都被其他的类所重写。 Boolean类 定义方法var ob = new Boolean(true); ob是Boolean原始数据类型的一个引用。在使用Boolean对象过程中,需要注意,所有的对象会自动转变为true,因此 var ob1 = new Boolean(false); var ob2 = ob1 && true; 最后ob2的值是true,非false。一般情况下,使用Boolean原始数据类型可以避免这种情况。 Number类 定义方法var o = new Number(15); 获得原始数据的值var n = o.valueOf(); Number类有一些为数字类型的值特别设计的方法: alert(o.toFixed(2)); //输出15.00 alert(o.toExponential(1)); //输出1.5e+1 在无法确定使用toFixed还是toExponential的时候,可以使用toPrecision方法来获得取值: alert(o.toPrecision(1)); //输出2e+1 alert(o.toPrecision(2)); //输出15 alert(o.toPrecision(3)); //输出15.0 String类 String类是一种复杂引用类型,这里仅列出一些常见的方法,其中不少都是模仿java.lang.String: var s = new String(“Good Morning”); alert(s.valueOf() == s.toString()); //输出true alert(s.length); //输出12 alert(s.charAt(1)); //输出o var sr = s.concat(“ !”); alert(sr); //输出Good morning ! alert(s.indexOf(“o”); //输出1 alert(s.lastIndexOf(“o”); //输出6 alert(s.localeCompare(Good morning)); //输出0 alert(s.localeCompare(Apple)); //输出1 alert(s.localeCompare(House)); //输出-1 alert(s.slice(2)); //输出od morning alert(s.substring(2)); //输出od morning alert(s.slice(2,-5)); //输出od mo alert(s.substring(2,-5)); //输出Go alert(s.toUpperCase()); //输出GOOD MORNING alert(s.toLowerCase()); //输出good morning 另外,所有String类的方法同样可以用于String原始数据类型,因为它是伪对象。 待续~~~ |
|
返回顶楼 | |