1.????
何為
Jscript
JScript
是一種解釋型的、基于對(duì)象的腳本語(yǔ)言。
?
局限性:
????
1)???????
不能使用該語(yǔ)言來(lái)編寫(xiě)?yīng)毩⑦\(yùn)行的應(yīng)用程序
2)???????
沒(méi)有對(duì)讀寫(xiě)文件的內(nèi)置支持
3)???????
只能在某個(gè)解釋器或
“
宿主
”
上運(yùn)行,如
ASP
、
Internet
瀏覽器或者
Windows
腳本宿主
?
JScript
是一種寬松類(lèi)型語(yǔ)言
,
這意味著我們不必顯式定義變量的數(shù)據(jù)類(lèi)型。多數(shù)情況下,
JScript
將根據(jù)需要自動(dòng)進(jìn)行轉(zhuǎn)換。例如:將數(shù)值添加到字符串上時(shí),數(shù)值將被轉(zhuǎn)換為字符串(詳情見(jiàn)強(qiáng)制轉(zhuǎn)換)。
?
?
2.????
變量的聲明
var count;???????????????? //
變量聲明
var count = 0;???????????//
變量聲明
&
初始化
name = "";????????????????//
隱式聲明變量
name
,沒(méi)有使用關(guān)鍵字
var
?
1)???????????
變量聲明之后就置于內(nèi)存之中,以便后來(lái)在腳本中使用
2)???????????
若在
var
語(yǔ)句中變量沒(méi)有初始化,變量自動(dòng)取值
undefined
(
注
1)
3)???????????
隱式聲明的變量擁有全局范圍可見(jiàn)度。當(dāng)在函數(shù)中聲明一個(gè)變量時(shí),該變量不能用于全局范圍,所以函數(shù)中聲明變量必須使用
var
關(guān)鍵
4)???????????
不能使用未經(jīng)過(guò)聲明的變量
5)???????????
聲明一個(gè)變量并進(jìn)行初始化,但又不想指定任何特殊值,可以賦值為
null
。
?
var count = null;
var money = 3 * count;?????? // money
的值為
0
。
?
6)???????????
聲明一個(gè)變量但沒(méi)有初始化,其值為
undefined
?
var longth;
var area = 10 * longth;?????? // area
的值為
NaN
,因?yàn)?/span>
longth
為
undefined
。
***********************************?
*???JScript
中
null
和
undefined
的主要區(qū)別???*
***************************************
---?? null
是關(guān)鍵字;
undefined
是
Global
對(duì)象的一個(gè)屬性。
?
---???null
是對(duì)象
(
空對(duì)象
,
沒(méi)有任何屬性和方法
)
;
undefined
是
undefined
類(lèi)型的值。
?
document.writeln(typeof null);?????????????????? //
輸出
object
document.writeln(typeof undefined);?????????//
輸出
undefined
?
---??
對(duì)象模型中,所有的對(duì)象都是
Object
或其子類(lèi)的實(shí)例,但
null
對(duì)象例外:
document.writeln(null instanceof Object);//
輸出
false
?
---?? null“
等值
(==)”
于
undefined
,但不
“
全等值
(===)”
于
undefined
:
document.writeln(null == undefined);????????????????//
輸出
true
document.writeln(null === undefined);???????????? //
輸出
false
?
---???
運(yùn)算時(shí)
null
與
undefined
都可以被類(lèi)型轉(zhuǎn)換為
false
,但不等值于
false
:
document.writeln(!null);?????????????????????????????????? //
輸出
true
document.writeln(!undefined);?????????????????????? ? //
輸出
true
document.writeln(null==false);??????????????????????? //
輸出
false
document.writeln(undefined==false);????????????? //
輸出
false
?
?
7)???????????
JScript
是一種區(qū)分大小寫(xiě)的語(yǔ)言,因此變量名稱
blogjava
和變量名稱
blogJava
是不一樣的
?
<
注
1>
:
undefined
?
undefined
屬性
Global
(
注
2)
對(duì)象的一個(gè)成員,該屬性在腳本引擎初始化后可用。
?
如果聲明了一個(gè)變量但沒(méi)有初始化,該變量的值就是
undefined
。
?
如果沒(méi)有聲明變量,那么就不能將其與
undefined
進(jìn)行比較,但是可以將該變量的類(lèi)型與字符串
"undefined"
進(jìn)行比較。
?
*****? undefined
應(yīng)用示例
*****
?
var declared;??????????????????????????????????? //
聲明變量。
if (declared == undefined)??????????????? //
測(cè)試變量。
? document.write("declared has not been initialized.");
?
if (typeOf(notDeclared) == "undefined")
? document.write("notDeclared has not been defined.");
?
<
注
2>
:
Global
?
Global
對(duì)象是一個(gè)固有對(duì)象
(
注
3)
,把所有全局方法集中在一個(gè)對(duì)象中。
?
Global
不能用
new
運(yùn)算符創(chuàng)建。它在
JScripting
引擎被初始化時(shí)創(chuàng)建,并立即使其方法和屬性可用。
?
***** Global
屬性
*****
?
1)???????
Infinity
:返回
Number.POSITIVE_INFINITY
的初始值
???POSITIVE_INFINITY
屬性返回比在
JScript
中能夠表示的最大的數(shù)
(Number.MAX_VALUE)
更大的值。
???JScript
將
POSITIVE_INFINITY
值顯示為
infinity,
該值數(shù)學(xué)上的作用與正無(wú)窮相同。
?
?與之相對(duì),
NEGATIVE_INFINITY
屬性返回比
JScript
能夠表示的最小負(fù)數(shù)(
-Number.MAX_VALUE
)更小的值。
???JScript
將
NEGATIVE_INFINITY
值顯示為
-infinity,
該值數(shù)學(xué)上的作用與負(fù)無(wú)窮相同。
?可以看出
POSITIVE_INFINITY
和
NEGATIVE_INFINITY
都是
Number
對(duì)象的屬性,
Number
對(duì)象最主要的用途是將其屬性集中到一個(gè)對(duì)象中,以及使數(shù)字能夠通過(guò)
toString
方法轉(zhuǎn)換為字符串。
?
Number
屬性
|
Number
方法
|
MAX_VALUE
|
toLocaleString
|
MIN_VALUE
|
NaN
|
toString
|
NEGATIVE_INFINITY
|
POSITIVE_INFINITY
|
valueOf
|
constructor
|
prototype
|
?
2)???????
NaN
:返回特殊值
NaN
,表示表達(dá)式不是數(shù)字
?相關(guān)方法:
isNan( numValue )
??????????返回一個(gè)
Boolean
值,指明提供的值
(numValue)
是否是保留值
NaN (
不是數(shù)字
) ,即判斷是否為數(shù)字。
????????? 如果值是
NaN
,
那么
isNaN
函數(shù)返回
true
,否則返回
false
。
??????????
使用這個(gè)函數(shù)的典型情況是檢查
parseInt
和
parseFloat
方法的返回值。
????????? 還有一種辦法,變量可以與它自身進(jìn)行比較。
如果比較的結(jié)果不等,那么它就是
NaN
。
這是因?yàn)?/span>
NaN
是唯一與自身不等的值。
?
***** Global
方法
*****
?
Global
方法
|
escape
|
eval
|
isFinite
|
isNaN
|
parseFloat
|
parseInt
|
unescape
|
?
<
注
3>
:
固有對(duì)象
?
固有對(duì)象是作為標(biāo)準(zhǔn)
JScript
語(yǔ)言一部分的一種對(duì)象。所有的腳本都可以使用這種對(duì)象。
JScript
中的固有對(duì)象:
固有對(duì)象
|
Array
|
Boolean
|
Date
|
Function
|
Global
|
Math
|
Number
|
Object
|
RegExp
|
Regular
|
Expression
|
String
|
?
3.????
強(qiáng)制轉(zhuǎn)換
在
Jscript
中,可以對(duì)不同類(lèi)型的值執(zhí)行運(yùn)算,
JScript
解釋器自動(dòng)將數(shù)據(jù)類(lèi)型之一改變
(
強(qiáng)制轉(zhuǎn)換
)
為另一種數(shù)據(jù)類(lèi)型,然后執(zhí)行運(yùn)算。
?
運(yùn)算
|
結(jié)果
|
數(shù)值與字符串相加
|
將數(shù)值強(qiáng)制轉(zhuǎn)換為字符串
|
布爾值與字符串相加
|
將布爾值強(qiáng)制轉(zhuǎn)換為字符串
|
數(shù)值與布爾值相加
|
將布爾值強(qiáng)制轉(zhuǎn)換為數(shù)值
|
?
?
*****
強(qiáng)制轉(zhuǎn)換示例
*****
?
var year = 2008;???????????????? //
一個(gè)數(shù)字
var hello = "Hello ";???????????? //
一個(gè)字符串
hello = hello + year;???? ?????? //
將數(shù)字強(qiáng)制轉(zhuǎn)換為字符串
document.write(hello);????????//
輸出
Hello 2008
?
要想顯示的將字符串轉(zhuǎn)換為數(shù)字可使用方法
parseInt()
和
parseFloat()
。
?
?
4.????
JScript
的數(shù)據(jù)類(lèi)型
Jscript
有三種主要數(shù)據(jù)類(lèi)型、兩種復(fù)合數(shù)據(jù)類(lèi)型和兩種特殊數(shù)據(jù)類(lèi)型。
主要(基本)數(shù)據(jù)類(lèi)型:?
?????
字符串
????
數(shù)值
????
布爾
復(fù)合(引用)數(shù)據(jù)類(lèi)型:?
??????
對(duì)象?
??????
數(shù)組
特殊數(shù)據(jù)類(lèi)型:?
??????
Null?
??????
Undefined
1.???????
字符串
1)???????
字符串中可以包含雙引號(hào),該雙引號(hào)兩邊需加單引號(hào),
?字符串中可以包含單引號(hào),該單引號(hào)兩邊需加雙引號(hào)。
"I’m Ma Jia nan."
'"good good study, day day up", my teacher said.'
?
2)???????
JScript
中沒(méi)有表示單個(gè)字符的類(lèi)型(如
C++
的
char
)。要表示
Jscript
中的單個(gè)字符,應(yīng)創(chuàng)建一個(gè)只包含一個(gè)字符的字符串。包含零個(gè)字符(
""
的字符串是空(零長(zhǎng)度)字符串
?
2.???????
數(shù)值類(lèi)型
在
Jscript
中整數(shù)和浮點(diǎn)值沒(méi)有差別;
JScript
數(shù)值可以是其中任意一種(
JScript
內(nèi)部將所有的數(shù)值表示為浮點(diǎn)值)。
??????
1)???????
整型
八進(jìn)制和十六進(jìn)制數(shù)可以為負(fù),但不能有小數(shù)位,同時(shí)不能以科學(xué)計(jì)數(shù)法(指數(shù))表示。
2)???????
JScript
包含特殊值數(shù)字:
NaN(
不是數(shù))。當(dāng)對(duì)不適當(dāng)?shù)臄?shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算時(shí)使用,例如字符串或未定義值。
正無(wú)窮大。在JScript中如果一個(gè)正數(shù)太大的話使用它來(lái)表示。
負(fù)無(wú)窮大。在JScript中如果一個(gè)負(fù)數(shù)太大的話使用它來(lái)表示。
正0和負(fù)0。Jscript區(qū)分正0和負(fù)0。
3.???????
boolean
任何值為
0
、
null 、未定義(undefined)或空字符串的表達(dá)式被解釋為false。其他任意值的表達(dá)式解釋為true
?
4.???????
Null
數(shù)據(jù)類(lèi)型
1)???????
在
Jscript
中數(shù)據(jù)類(lèi)型
null
只有一個(gè)值:
null
。關(guān)鍵字
null
不能用作函數(shù)或變量的名稱。
2)???????
包含
null
的變量包含
“
無(wú)值
”
或
“
無(wú)對(duì)象
”
。換句話說(shuō),該變量沒(méi)有保存有效的數(shù)、字符串、
boolean 、數(shù)組或?qū)ο蟆?/span>
3)???????
Jscript
中,
null
與
0
不相等(與在
C
和
C++
中不同)。同時(shí)應(yīng)該指出的是,
Jscript
中
typeof
運(yùn)算符將報(bào)告
null
值為
Object
類(lèi)型,而非類(lèi)型
null
。這點(diǎn)潛在的混淆是為了向下兼容。
5.???????
Undefined
數(shù)據(jù)類(lèi)型
如下情況使返回
undefined
值:
¨???????
對(duì)象屬性不存在,
¨???????
聲明了變量但從未賦值。
???注意不能通過(guò)與 undefined 做比較來(lái)測(cè)試一個(gè)變量是否存在,但可以檢查它的類(lèi)型是否為
“
undefined
”
。在以下的代碼范例中,假設(shè)程序員想測(cè)試是否已經(jīng)聲明變量 x :
??????//方法不起作用?
??????if( x == undefined)
????????????//do sth
??????
???//方法不起作用,必須檢查字符串"undefined"
???if(typeof(x) == undefined)
??????// do sth
???//方法有效
???if(typeof(x) == "undefined")
??????//do sth
考慮將
undefined
值與
null
做比較。?
?????
someObject.prop == null;
????
?
如下情況時(shí),比較的結(jié)果為
true :
?????? 如果屬性
someObject.prop
包含
null
值
??????
如果屬性
someObject.prop
不存在
要檢查一個(gè)對(duì)象屬性是否存在,可以使用新的
in
(
注
4)
運(yùn)算符:
if("prop" in someObject)
//someObject有屬性prop
<
注
4>
:
in
運(yùn)算符
?
result
= propertyinobject
?
in
操作檢查對(duì)象中是否有名為
property
的屬性。
?
?
?<to be continued ... ...>
?
?
?
?
馬嘉楠
jianan.ma@gmail.com
posted on 2006-09-07 20:08
馬嘉楠 閱讀(443)
評(píng)論(0) 編輯 收藏