论坛首页 Web前端技术论坛

ECMAScript 基础

浏览 10581 次
精华帖 (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
   发表时间: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’ 均是合法的表示方法。
0 请登录后投票
   发表时间: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 )。
0 请登录后投票
   发表时间: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 。

待续~~~
0 请登录后投票
   发表时间:2006-06-14  
这种哪里都能看到的垃圾就麻烦不要贴上来了
0 请登录后投票
   发表时间:2006-06-14  
box 写道
这种哪里都能看到的垃圾就麻烦不要贴上来了


有时候一些BUG就是因为这些“垃圾”没有处理好而存在。

最开始就声明了这是个人的学习笔记,高手有兴趣就随意看看,不对之处就给予赐教,人总要从最基础的学起。在这里帖基础的东西不妥,但这是个过程,文中也注明了待续,成为一个精简的基础系列我想也可以吧,如果实在不允许,管理员可以根据版规直接删除,我没意见,就算你是高手,但请不要在这里用“垃圾”来乱评别人的帖,注意置顶删帖规则中的“在论坛污言秽语,攻击他人的删除用户ID,并且封锁IP地址 ”。
0 请登录后投票
   发表时间:2006-06-14  
box 写道
这种哪里都能看到的垃圾就麻烦不要贴上来了


box,这样属于典型的攻击,请以后注意收敛。
0 请登录后投票
   发表时间:2006-06-14  
flyingis 写道
box 写道
这种哪里都能看到的垃圾就麻烦不要贴上来了


有时候一些BUG就是因为这些“垃圾”没有处理好而存在。

最开始就声明了这是个人的学习笔记,高手有兴趣就随意看看,不对之处就给予赐教,人总要从最基础的学起。在这里帖基础的东西不妥,但这是个过程,文中也注明了待续,成为一个精简的基础系列我想也可以吧,如果实在不允许,管理员可以根据版规直接删除,我没意见,就算你是高手,但请不要在这里用“垃圾”来乱评别人的帖,注意置顶删帖规则中的“在论坛污言秽语,攻击他人的删除用户ID,并且封锁IP地址 ”。

抱歉,我过分了。
0 请登录后投票
   发表时间:2006-06-14  
To box:
写的是比较基础,希望以后能多交流。
0 请登录后投票
   发表时间: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原始数据类型,因为它是伪对象。

待续~~~
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics