1、第三章 数据类型 和 值第三章 数据类型 和 值1、数字(Numbers):JavaScript不区分 整型数值 和 浮点数值,都由浮点型表示,JavaScript采用IEEE754标准定义的64位浮点格式表示数字(Java和C以及C中使用的double格式)。负号“-”是一元反运算符,它不是数值直接量语法的一部分。使用它可以构成负数。2、浮点型直接量格式:digits.digits(E|e)(+|-)digits3、特殊数值的常量:Infinity 表示无穷大的特殊值NaN 特殊的非数字值Number.MAX_VALUE 可表示的最大数字Number.MIN_VALUE 可表示的最小数字(与
2、零最接近的数字)Number.NaN 特殊的非数字值Number.POSITIVE_INFINITY表示正无穷大的特殊值Number.NEGATIVE_INFINITY表示负无穷大的特殊值4、字符串(string):是由Unicode字符、数字、标点符号等组成的序列。JavaScript没有char类型,单个字符使用长度为1的字符串表示。5、JavaScript转义字符序列,与C、C和Java转义字符类似。6、字符串使用“+“连接,(区别vbscript使用“ 2)var square=function(x) return x*x; /为了遵从LISP程序设计语言,用这 方式定义的函数有 为
3、(lambda)函数。LISP语言是最 程序的直接量数值中 无 函数的语言之一。3)var square = new Function(“x“, “return x*x;“); /用这 方式定义的函数没有用 方式定义的函数有 。10、 (object):是 的数据的 。这 的数据 常 为 的 用(有 , 为 的“ )。用 的 : image.width11、 :var o = new Object( );var now = new Date( );var pattern = new RegExp(“sjavas“, “i“);12、JavaScript中的“ 可以 为“数组 使用:image“
4、width“。13、 直接量:1) 直接量的 :var point = x:2.3, y:-1.2 ;2)currency1可以 使用:var rectangle = upperLeft: x: 2, y: 2 ,lowerRight: x:4, y: 4 ;3) 值不“是常量,可以是的JavaScript表 式:var square= upperLeft: x:point.x, y:point.y ,lowerRight: x:(point.x + side), y:(point.y+side) ;14、数组(array):和 一是数值的 。fi不同的是, 中的fl个数值都有一个 字, 数组
5、的fl个值有一个数字,或是“标 。( 使用“ 值, 数组使用“标 )document.images1.width15、数组的 :1) ,值: var a = new Array( );a0 = 1.2;a1 = “JavaScript“;a2 = true;a3 = x:1, y:3 ;2) :var a = new Array(1.2, “JavaScript“, true, x:1, y:3 );3)”一个数, 数 定数组的长度:var a = new Array(10); / 一个长度为10的数组。16、数组直接量:( 三 类型,类似 直接量,)1)使用常量:var a = 1.2, “
6、JavaScript“, true, x:1, y:3 ;2)JavaScript不 数组“,数组中可以 数组:var matrix = 1,2,3, 4,5,6, 7,8,9;3)使用表 式:var base = 1024; var table = base, base+1, base+2, base+3;4)可以“ 定义的元 , 号之 元的值 可以了:var sparseArray = 1,5;17、null:JavaScript的一个特殊值,它表示“无值 。null常常 类型的一个特殊值, “无 的值。它是 一无 的,有别于其他fi有的值。一个 量的值为null, 它的值不是有 的、数组
7、、数字、字符串和布尔值。18、undefined: 一个特殊值。 尔一用,它 是值undefined。使用 :1)使用了一个 的 量 2)使用了 没有值的 量 3)使用了一个 的 。19、然undefined和null值不同,是=运算符 等:my的prop 不 的 :my.prop = null 成 ,表 式值为true。:“ 区分null和undefined,可以使用“=”运算符或typeof运算符。(“=”运算符 “第 章 )20、无法 使用的JavaScript实现有 量undefined, 一个可:var undefined; / ,不它, 可以 它的值为undefined void运
8、算符 了 一 undefined值的方法。21、Date :不是JavaScript的 数据类型,它 表示日期和实践的 类。21、正则表 式 为描述文 模式 了丰富、强大的语法,它们常用于模式匹配和查找替换的操 。JavaScript采用了Perl程序设计语言的语法表示正则表 式。 JavaScript中,正则表 式有RegExp 表示的。与Date 不同的是,RegExp 有一个直接量语法,可以直接编码到JavaScript 1.2程序中:例子: /HTML/、/1-90-9*/、/bjavascriptb/i22、Error :ECMAScript v3定义了大量表示错误的类。 发生运行
9、错误 ,JavaScript解释器抛出某个类的 (阅“第六章 有try和throw语句)。fl个Error 具有一个message ,放错误消息。预定义错误 类型有:Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。23、 数据类型的装(wrapper) : 使用一个字符串s的 ,可以 过length、subString等 、方法,这个s不是 啊!使用typeof可 是string类型,不是object类型, 为什 能够是用 和方法呢?答: 过装(wrapper),使用 或方法的 ,JavaScri
10、pt为字符串类型s瞬 了String 代替原 字符串值(JavaScript可以很灵活地一 类型的值转换为 一 类型)。操 完毕,这个 系统 动丢弃。24、 想 程序中显式地使用String 是, “ 一个非瞬态的 ,不能 系统丢弃的:var s = “hello world“; /原的字符串值var s = new String(“hello world“); /String 25、 操 String 的值 ,同23一原理,JavaScriptcurrency1 动String 转换为一个字符串操 ,操 完毕, 动 系统丢弃。 String 像字符串一可以使用“+”运算符 连接字符串。26、
11、上面讨论的装 原理都是用于数字、布尔值及其他应的Number 及Boolean 。End 2006-12-2 18:35:36第四章 量第四章 量1、 量(variable)是一个和数值的 字。我们 量“ 了或“ 了个值。2、JavaScript和Java与C语言 一个重的差别, 是JavaScript是无类型(untype)的。这味着JavaScript的 量可以放何类型的值, Java和C能放它们 的特定类型的数据。面的例子是法的:i=10; / 予数字类型数据i=“ten“; /予其字符串类型数据Java和C中,上面的代码是不 法的!有一个特 是与JavaScript缺少类型规则, “
12、JavaScript可以快速、 动地一 类型的值转换成 外一 类型(我:第三章中的“装 是这转换的)。3、 量的 :“ (declare)( 没有显式地 量,JavaScript 替 隐式地 它。),使用var键字:var i; / 一个 量i var i,sum; / 个 量i和sum var message = “hello“; / 量和 量绑定 一起 没有 定值, 它的值是undefined。:var 的 量是永久 的,currency1 是,用delete运算符 删除这 量 发错误(delete阅第 章)。4、重复的 和 遗漏的 :1)重复的 :(1)使用var语句次 同一个 量不仅是
13、 法的, 且currency1不 造成何错误。(2)重复的 有一个值, 它担 的不过是一个值语句的角色。2)遗漏的 :(1)尝试读一个 的 量的值,JavaScript 生成一个错误。(2)尝试给一个 用var 的 量值,JavaScript 隐式 量。(是 ,隐式 的量总是 为“全局 量 ,使 量 一个函数体内使用)5、 量的 用 (scope):是程序中定义这个 量的区 。全局(global) 量: 用 是全局 的, JavaScript代码中,它处处都有定义。局部(local) 量: 用 是局部 的,能 函数体内部有定义。(函数的数currency1是局部 量)6、函数体内部,局部 量的
14、优 级比同 的 全局 量高。(函数体内的 量 全局 量同 , 有 的隐藏了全局 量)var scope = “global“;function checkscope() var scope = “local“;document.write(scope);checkscope(); /上面的代码输出的是“local“。7、然全局 量可以不实用var,函数内使用与全局 量同 的话,函数内部的“局部 “ ,不然 更了全局 量!8、函数的 可能出现几个局部 用 的 层!var scope = “global scope“; / A global variablefunction checkscope(
15、) var scope = “local scope“; / A local variablefunction nested() var scope = “nested scope“; / A nested scope of local variablesdocument.write(scope); / Prints “nested scope“nested();checkscope();9、没有块级 用 :function test(o) var i = 0; / i is defined throughout functionif (typeof o = “object“) var j =
16、 0; / j is defined everywhere, not just blockfor(var k = 0; k 10; k+) / k is defined everywhere, not just loopdocument.write(k);document.write(k); / k is still defined: prints 10document.write(j); / j is defined, but may not be initialized上面的代码中的j是 用 整个函数之中的,不同与Java、C和C,这段代码放 它们中 出错了!10、 上面的规则进一步讨论:
17、var scope = “global“;function f() alert(scope); / Displays “undefined“, not “global“var scope = “local“; / Variable initialized here, but defined everywherealert(scope); / Displays “local“f();上面的代码中:1)scope 函数体内有定义,便隐藏了全局 量scope。2)是第一个alert()为什 输出“undefined“呢?因为var语句 它之 出现,然使函数体内都有定义了,第一个alert()之 出现
18、的,这局部 量scope定义了,没有值! 为“undefined“。(undefined是“ 值的 量(unassigned) 的值,为了区别与“为定义 的 量!,面的例子 了 )。var x; / 一个 值的 量,它的值 undefined。alert(u); /使用 的 量 发错误。u = 3; /给 的 量值, 量。3)第 个alert() 局部 量定义, 予了值“local”之 执行, 输出“local“。11、 于上面10 的代码,等 面代码:function f( ) var scope; / Local variable is declared at the start of t
19、he functionalert(scope); / It exists here, but still has “undefined“ valuescope = “local“; / Now we initialize it and give it a valuealert(scope); / And here it has a value这 不解释了_(上面的例子 了为什 fi有的 量 中起 放 函数的 是一个 的成 )12、 类型 和 用类型:( 用类型阅11.2 )1) 类型:数值、布尔值、null和为定义的值。2) 用类型: 、数组和函数。 面 段代码 了:var a = 3.14;
20、 / Declare and initialize a variablevar b = a; / Copy the variables value to a new variablea = 4; / Modify the value of the original variablealert(b) / Displays 3.14; the copy has not changedvar a = 1,2,3; / Initialize a variable to refer to an arrayvar b = a; / Copy that reference into a new variab
21、lea0 = 99; / Modify the array using the original referencealert(b); /b是1,2,3的 一个“ 用 ,a是最的应用,由第 句给了b。13、无用单元的 :C和C语言,内“ 动地释放, 的fi有 ,且 不这 它们(释放内 ),这 是程序设计的 。常常是 生bug的 。JavaScript则 不 动地 配内,它使用一 成为“无用单元 (garbage collection) 的方法。JavaScript解释器可以 到何 程序不使用一个 了。 定无用 (例一个 没有用了),它 这个 用的内释放 了。例面的代码 了:var s = he
22、llo; /给一个字符串分配内var u = s.toUpperCase();/ 一个 字符串s = u; / 原字符串的 用!这个 ,s原 用的hello字符串 没有“ 用“ 它了,系统 释放这个 fi 用的 了。无用单元的 “ 动 进行的, 程序 是“不可 的 。14、 JavaScript中, 的 和 量是没有区别的。1)全局 :JavaScript解释器 运行 , 一个全局 (global object),这个 的 是全局 量。( 一个全局 量 ,实上是定义了一个全局 的一个 )外,JavaScript 用 预定义的 值和函数 全局 的 。(例:Infinity、Math等)程序的层代
23、码中(例不 于函数的代码), 可以使用this键字 用全局 。 函数内部,this则有别的用处。2)局部 量:currency1用 :全局 量是特殊的全局 的 ,局部 量currency1是一个 的 ,这个 为currency1用 (call object)。执行函数 ,函数的数和局部 量是 为currency1用 的 的。用一个完全 的 局部量使JavaScript可以“局部 量同 的全局 量的值。3)JavaScript的执行:执行(execution context),JavaScript为fl一个 、函数 一个执行,这个的一个重部分 是定义 量的 。fi以,运行不 于何函数的JavaScript代码的使用的 是全局 。p68End第 章第 章 JavaScript1、End第 章第 章 JavaScript1、End第 章第 章 JavaScript1、End第 章第 章 JavaScript1、End第 章第 章 JavaScript1、End第 章第 章 JavaScript1、End