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