目錄
javascript 的注意事項(xiàng)
javascript 的聲明
變量
運(yùn)算符
語句流程
捕獲錯(cuò)誤
函數(shù)
類
對(duì)象
事件
參考鏈接
以下內(nèi)容大部分來自http://www.w3school.com.cn/
javascript 的注意事項(xiàng)
1.注釋
- 單行的注釋以 // 開始.
- 多行注釋以 /* 開頭,以 */ 結(jié)尾.
- 注釋與 java,c 和 php 語言相同
2.JavaScript 是面向?qū)ο蟮木幊陶Z言 (OOP)
- OOP 語言使我們有能力定義自己的對(duì)象和變量類型.
- 對(duì)象只是一種特殊的數(shù)據(jù).對(duì)象擁有屬性和方法
3.插入特殊字符
- 反斜杠用來在文本字符串中插入省略號(hào),換行符,引號(hào)和其他特殊字符.
4.空格
- JavaScript 會(huì)忽略多余的空格.所以您可以在代碼中添加適當(dāng)?shù)目崭?使得代碼的可讀性更強(qiáng).
5.換行
- 您可以在文本字符串內(nèi)部使用反斜杠對(duì)代碼進(jìn)行折行
//下面的例子是正確的:document.write("Hello World!")//但是不能像這樣折行:document.write ("Hello World!")
6.JavaScript 語句是發(fā)給瀏覽器的命令.這些命令的作用是告訴瀏覽器要做的事情
7.語法
- 每行結(jié)尾的分號(hào)可有可無
- 括號(hào)代表代碼塊
javascript 的聲明
形式
- 第一種
<script type="text/javascript">
javascript的內(nèi)容
</script>
說明:<script type="text/javascript"> 和 </script> 就可以告訴瀏覽器 JavaScript 從何處開始,到何處結(jié)束. - 第二種
<script type="text/javascript"> async="" src="javascript 腳本的位置"></script>
聲明位置
- 位于 head 部分的腳本
當(dāng)腳本被調(diào)用時(shí),或者當(dāng)事件被觸發(fā)時(shí),腳本就會(huì)被執(zhí)行.當(dāng)你把腳本放置到 head 部分后,就可以確保在需要使用腳本之前,它已經(jīng)被載入了. - 位于 body 部分的腳本
在頁面載入時(shí)腳本就會(huì)被執(zhí)行.當(dāng)你把腳本放置于 body 部分后,它就會(huì)生成頁面的內(nèi)容. - 在 body 和 head 部分的腳本
你可以在文檔中放置任何數(shù)量的腳本,因此你既可以把腳本放置到 body,又可以放置到 head 部分. - 使用外部 JavaScript
有時(shí),你也許希望在若干個(gè)頁面中運(yùn)行 JavaScript,同時(shí)不在每個(gè)頁面中寫相同的腳本.
為了達(dá)到這個(gè)目的,你可以將 JavaScript 寫入一個(gè)外部文件之中.然后以 .js 為后綴保存這個(gè)文件.
然后把 .js 文件指定給 <script> 標(biāo)簽中的 "src" 屬性,就可以使用這個(gè)外部文件了:
提示: 您可以把 .js 文件放到網(wǎng)站目錄中通常存放腳本的子目錄中,這樣更容易管理和維護(hù).
注意: 外部文件不能包含 <script> 標(biāo)簽.
變量
[變量][javascript 變量命名規(guī)則][變量類型][變量聲明][生存周期][關(guān)鍵字][保留字][三種命名法]
變量:
- 向未聲明的 JavaScript 變量賦值,如果您所賦值的變量還未進(jìn)行過聲明,該變量會(huì)自動(dòng)聲明
- 變量是弱類型,變量無特定類型,變量可以只聲明不初始化
- 可以將變量先初始化為字符串的值,之后把它設(shè)置為數(shù)字值
- JavaScript 變量都是偽對(duì)象所以它們具有屬性和方法
JavaScript 變量命名規(guī)則:
- 變量對(duì)大小寫敏感(y 和 Y 是兩個(gè)不同的變量)
- 變量必須以字母或下劃線開始余下的字符可以使下劃線,美元符號(hào)或任何字母,數(shù)字字符
- 區(qū)分大小寫
變量類型:
原始值(primitive value)
- 是存儲(chǔ)在棧(stack)中的簡(jiǎn)單數(shù)據(jù)段,也就是說,它們的值直接存儲(chǔ)在變量訪問的位置.
- 5 種原始類型: Undefined, null, boolean, number, string
引用值(reference value)
- 是存儲(chǔ)在堆(heap)中的對(duì)象,也就是說,存在變量處的值是一個(gè)指針(point),指向存儲(chǔ)對(duì)象的內(nèi)存處.
聲明變量:
您可以通過 var 語句來聲明 JavaScript 變量:
JavaScript 變量的生存期:
- 當(dāng)您在函數(shù)內(nèi)聲明了一個(gè)變量后,就只能在該函數(shù)中訪問該變量.當(dāng)退出該函數(shù)后,這個(gè)變量會(huì)被撤銷.這種變量稱為本地變量.您可以在不同的函數(shù)中使用名稱相同的本地變量,這是因?yàn)橹挥新暶鬟^變量的函數(shù)能夠識(shí)別其中的每個(gè)變量.
- 如果您在函數(shù)之外聲明了一個(gè)變量,則頁面上的所有函數(shù)都可以訪問該變量.這些變量的生存期從聲明它們之后開始,在頁面關(guān)閉時(shí)結(jié)束
關(guān)鍵字:
break else new var case finally return
void continue function this with default if
throw delete in try do instanceof typeof
保留字:
abstract enum int short boolean export
interface static byte extends long super char
final native synchronized class float package
throws const goto private transient debugger
implements protected volatile double import public
聲明變量時(shí)候最好遵守三種命名規(guī)則:
- Camel 標(biāo)記法
首字母是小寫的,接下來的單詞都是大寫字母開頭
var myTestValue=0; - Pascal 標(biāo)記法
首字母是大寫的,接下來的單詞都是大寫字母開頭
var MyTestValue=0; - 匈牙利類型標(biāo)記法
在以Pascal標(biāo)記命名的變量前附加一個(gè)小寫字母(或小寫字母序列),說明該變量的類型.- i 整數(shù)
- s 字符串
- a 數(shù)組
- b 布爾型
- fn 函數(shù)
- o 對(duì)象
- re 正則表達(dá)式
- v 變量(可以是任何類型)
運(yùn)算符
位運(yùn)算:[NOT][AND][OR][XOR][左移運(yùn)算][有符號(hào)右移運(yùn)算][無符號(hào)右移運(yùn)算]
邏輯運(yùn)算:[邏輯 NOT][邏輯 AND][邏輯 OR]
算數(shù)運(yùn)算:[乘][除][取模][加][減]
關(guān)系運(yùn)算:[等號(hào)和非等號(hào)][全等號(hào)和非全等號(hào)]
其他:[條件運(yùn)算][賦值運(yùn)算][typeof 運(yùn)算符]
位運(yùn)算 NOT
說明:
位運(yùn)算 NOT 由否定號(hào)(~)表示,它是 ECMAScript 中為數(shù)不多的與二進(jìn)制算術(shù)有關(guān)的運(yùn)算符之一.
處理過程:
- 把運(yùn)算數(shù)轉(zhuǎn)換成 32 位數(shù)字
- 把二進(jìn)制數(shù)轉(zhuǎn)換成它的二進(jìn)制反碼
- 把二進(jìn)制數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)
位運(yùn)算 AND
說明:
位運(yùn)算 AND 由和號(hào)(&)表示,直接對(duì)數(shù)字的二進(jìn)制形式進(jìn)行運(yùn)算.它把每個(gè)數(shù)字中的數(shù)位對(duì)齊,然后用下面的規(guī)則對(duì)同一位置上的兩個(gè)數(shù)位進(jìn)行 AND 運(yùn)算:
第一個(gè)數(shù)字中的數(shù)位 第二個(gè)數(shù)字中的數(shù)位 結(jié)果
1 1 1
1 0 0
0 1 0
0 0 0
位運(yùn)算 OR
說明:
位運(yùn)算 OR 由符號(hào)(|)表示,也是直接對(duì)數(shù)字的二進(jìn)制形式進(jìn)行運(yùn)算.在計(jì)算每位時(shí),OR 運(yùn)算符采用下列規(guī)則:
第一個(gè)數(shù)字中的數(shù)位 第二個(gè)數(shù)字中的數(shù)位 結(jié)果
1 1 1
1 0 1
0 1 1
0 0 0
位運(yùn)算 XOR
說明:
位運(yùn)算 XOR 由符號(hào)(^)表示,當(dāng)然,也是直接對(duì)二進(jìn)制形式進(jìn)行運(yùn)算.XOR 不同于 OR,當(dāng)只有一個(gè)數(shù)位存放的是 1 時(shí),它才返回 1.真值表如下:
第一個(gè)數(shù)字中的數(shù)位 第二個(gè)數(shù)字中的數(shù)位 結(jié)果
1 1 0
1 0 1
0 1 1
0 0 0
左移運(yùn)算
說明:
左移運(yùn)算由兩個(gè)小于號(hào)表示(<<).它把數(shù)字中的所有數(shù)位向左移動(dòng)指定的數(shù)量.例如,把數(shù)字 2(等于二進(jìn)制中的 10)左移 5 位,結(jié)果為 64(等于二進(jìn)制中的 1000000):
var iOld = 2; //等于二進(jìn)制 10var iNew = iOld << 5; //等于二進(jìn)制 1000000 十進(jìn)制 64
注意:
- 在左移數(shù)位時(shí),數(shù)字右邊多出 5 個(gè)空位.左移運(yùn)算用 0 填充這些空位,使結(jié)果成為完整的 32 位數(shù)字.
- 左移運(yùn)算保留數(shù)字的符號(hào)位.例如,如果把 -2 左移 5 位,得到的是 -64,而不是 64.“符號(hào)仍然存儲(chǔ)在第 32 位中嗎?”是的,不過這在 ECMAScript 后臺(tái)進(jìn)行,開發(fā)者不能直接訪問第 32 個(gè)數(shù)位.即使輸出二進(jìn)制字符串形式的負(fù)數(shù),顯示的也是負(fù)號(hào)形式(例如,-2 將顯示 -10.)
有符號(hào)右移運(yùn)算
說明:
有符號(hào)右移運(yùn)算符由兩個(gè)大于號(hào)表示(>>).它把 32 位數(shù)字中的所有數(shù)位整體右移,同時(shí)保留該數(shù)的符號(hào)(正號(hào)或負(fù)號(hào)).有符號(hào)右移運(yùn)算符恰好與左移運(yùn)算相反.例如,把 64 右移 5 位,將變?yōu)?2:
var iOld = 64; //等于二進(jìn)制 1000000var iNew = iOld >> 5; //等于二進(jìn)制 10 十進(jìn)制 2
同樣,移動(dòng)數(shù)位后會(huì)造成空位.這次,空位位于數(shù)字的左側(cè),但位于符號(hào)位之后.ECMAScript 用符號(hào)位的值填充這些空位,創(chuàng)建完整的數(shù)字,如下圖所示:
無符號(hào)右移運(yùn)算
說明:
無符號(hào)右移運(yùn)算符由三個(gè)大于號(hào)(>>>)表示,它將無符號(hào) 32 位數(shù)的所有數(shù)位整體右移.對(duì)于正數(shù),無符號(hào)右移運(yùn)算的結(jié)果與有符號(hào)右移運(yùn)算一樣.
用有符號(hào)右移運(yùn)算中的例子,把 64 右移 5 位,將變?yōu)?2:
var iOld = 64; //等于二進(jìn)制 1000000var iNew = iOld >>> 5; //等于二進(jìn)制 10 十進(jìn)制 2
注意:
對(duì)于負(fù)數(shù),情況就不同了.無符號(hào)右移運(yùn)算用 0 填充所有空位.對(duì)于正數(shù),這與有符號(hào)右移運(yùn)算的操作一樣,而負(fù)數(shù)則被作為正數(shù)來處理.
邏輯 NOT 運(yùn)算符
說明:
- 在 ECMAScript 中,邏輯 NOT 運(yùn)算符與 C 和 Java 中的邏輯 NOT 運(yùn)算符相同,都由感嘆號(hào)(!)表示.
- 與邏輯 OR 和邏輯 AND 運(yùn)算符不同的是,邏輯 NOT 運(yùn)算符返回的一定是 Boolean 值.
邏輯 NOT 運(yùn)算符的行為如下:
- 如果運(yùn)算數(shù)是對(duì)象,返回 false
- 如果運(yùn)算數(shù)是數(shù)字 0,返回 true
- 如果運(yùn)算數(shù)是 0 以外的任何數(shù)字,返回 false
- 如果運(yùn)算數(shù)是 null,返回 true
- 如果運(yùn)算數(shù)是 NaN,返回 true
- 如果運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤
邏輯 AND 運(yùn)算符
說明:
在 ECMAScript 中,邏輯 AND 運(yùn)算符用雙和號(hào)(&&)表示
下面的真值表描述了邏輯 AND 運(yùn)算符的行為:
運(yùn)算數(shù) 1 運(yùn)算數(shù) 2 結(jié)果
true true true
true false false
false true false
false false false
邏輯 AND 運(yùn)算的運(yùn)算數(shù)可以是任何類型的,不止是 Boolean 值.
- 如果某個(gè)運(yùn)算數(shù)不是原始的 Boolean 型值,邏輯 AND 運(yùn)算并不一定返回 Boolean 值:
- 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是 Boolean 值,返回該對(duì)象.
- 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,返回第二個(gè)對(duì)象.
- 如果某個(gè)運(yùn)算數(shù)是 null,返回 null.
- 如果某個(gè)運(yùn)算數(shù)是 NaN,返回 NaN.
- 如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤.
邏輯 OR 運(yùn)算符
說明:
ECMAScript 中的邏輯 OR 運(yùn)算符與 Java 中的相同,都由雙豎線(||)表示
與邏輯 AND 運(yùn)算符一樣,邏輯 OR 運(yùn)算也是簡(jiǎn)便運(yùn)算.對(duì)于邏輯 OR 運(yùn)算符來說,如果第一個(gè)運(yùn)算數(shù)值為 true,就不再計(jì)算第二個(gè)運(yùn)算數(shù).
下面的真值表描述了邏輯 OR 運(yùn)算符的行為:
運(yùn)算數(shù) 1 運(yùn)算數(shù) 2 結(jié)果
true true true
true false true
false true true
false false false
與邏輯 AND 運(yùn)算符相似,如果某個(gè)運(yùn)算數(shù)不是 Boolean 值,邏輯 OR 運(yùn)算并不一定返回 Boolean 值:
- 如果一個(gè)運(yùn)算數(shù)是對(duì)象,并且該對(duì)象左邊的運(yùn)算數(shù)值均為 false,則返回該對(duì)象.
- 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,返回第一個(gè)對(duì)象.
- 如果最后一個(gè)運(yùn)算數(shù)是 null,并且其他運(yùn)算數(shù)值均為 false,則返回 null.
- 如果最后一個(gè)運(yùn)算數(shù)是 NaN,并且其他運(yùn)算數(shù)值均為 false,則返回 NaN.
- 如果某個(gè)運(yùn)算數(shù)是 undefined,發(fā)生錯(cuò)誤.
乘法運(yùn)算符
說明:
乘法運(yùn)算符由星號(hào)(*)表示,用于兩數(shù)相乘.
不過,在處理特殊值時(shí),ECMAScript 中的乘法還有一些特殊行為:
- 如果結(jié)果太大或太小,那么生成的結(jié)果是 Infinity 或 -Infinity.
- 如果某個(gè)運(yùn)算數(shù)是 NaN,結(jié)果為 NaN.
- Infinity 乘以 0,結(jié)果為 NaN.
- Infinity 乘以 0 以外的任何數(shù)字,結(jié)果為 Infinity 或 -Infinity.
- Infinity 乘以 Infinity,結(jié)果為 Infinity.
注釋:
如果運(yùn)算數(shù)是數(shù)字,那么執(zhí)行常規(guī)的乘法運(yùn)算,即兩個(gè)正數(shù)或兩個(gè)負(fù)數(shù)為正數(shù),兩個(gè)運(yùn)算數(shù)符號(hào)不同,結(jié)果為負(fù)數(shù).
除法運(yùn)算符
說明:
除法運(yùn)算符由斜杠(/)表示,用第二個(gè)運(yùn)算數(shù)除第一個(gè)運(yùn)算數(shù):
與乘法運(yùn)算符相似,在處理特殊值時(shí),除法運(yùn)算符也有一些特殊行為:
- 如果結(jié)果太大或太小,那么生成的結(jié)果是 Infinity 或 -Infinity.
- 如果某個(gè)運(yùn)算數(shù)是 NaN,結(jié)果為 NaN.
- Infinity 被 Infinity 除,結(jié)果為 NaN.
- Infinity 被任何數(shù)字除,結(jié)果為 Infinity.
- 0 除一個(gè)任何非無窮大的數(shù)字,結(jié)果為 NaN.
- Infinity 被 0 以外的任何數(shù)字除,結(jié)果為 Infinity 或 -Infinity.
注釋:
如果運(yùn)算數(shù)是數(shù)字,那么執(zhí)行常規(guī)的除法運(yùn)算,即兩個(gè)正數(shù)或兩個(gè)負(fù)數(shù)為正數(shù),兩個(gè)運(yùn)算數(shù)符號(hào)不同,結(jié)果為負(fù)數(shù).
取模運(yùn)算符
說明:
除法(余數(shù))運(yùn)算符由百分號(hào)(%)表示
與其他乘性運(yùn)算符相似,對(duì)于特殊值,取模運(yùn)算符也有特殊的行為:
- 如果被除數(shù)是 Infinity,或除數(shù)是 0,結(jié)果為 NaN.
- Infinity 被 Infinity 除,結(jié)果為 NaN.
- 如果除數(shù)是無窮大的數(shù),結(jié)果為被除數(shù).
- 如果被除數(shù)為 0,結(jié)果為 0.
- 注釋:如果運(yùn)算數(shù)是數(shù)字,那么執(zhí)行常規(guī)的算術(shù)除法運(yùn)算,返回除法運(yùn)算得到的余數(shù).
加法運(yùn)算符
說明:
加法運(yùn)算符(+)
與乘性運(yùn)算符一樣,在處理特殊值時(shí),ECMAScript 中的加法也有一些特殊行為:
- 某個(gè)運(yùn)算數(shù)是 NaN,那么結(jié)果為 NaN.
- -Infinity 加 -Infinity,結(jié)果為 -Infinity.
- Infinity 加 -Infinity,結(jié)果為 NaN.
- +0 加 +0,結(jié)果為 +0.
- -0 加 +0,結(jié)果為 +0.
- -0 加 -0,結(jié)果為 -0.
- 不過,如果某個(gè)運(yùn)算數(shù)是字符串,那么采用下列規(guī)則:
- 如果兩個(gè)運(yùn)算數(shù)都是字符串,把第二個(gè)字符串連接到第一個(gè)上.
- 如果只有一個(gè)運(yùn)算數(shù)是字符串,把另一個(gè)運(yùn)算數(shù)轉(zhuǎn)換成字符串,結(jié)果是兩個(gè)字符串連接成的字符串.
減法運(yùn)算符
說明:
減法運(yùn)算符(-)
與加法運(yùn)算符一樣,在處理特殊值時(shí),減法運(yùn)算符也有一些特殊行為:
- 某個(gè)運(yùn)算數(shù)是 NaN,那么結(jié)果為 NaN.
- Infinity 減 Infinity,結(jié)果為 NaN.
- -Infinity 減 -Infinity,結(jié)果為 NaN.
- Infinity 減 -Infinity,結(jié)果為 Infinity.
- -Infinity 減 Infinity,結(jié)果為 -Infinity.
- +0 減 +0,結(jié)果為 +0.
- -0 減 -0,結(jié)果為 -0.
- +0 減 -0,結(jié)果為 +0.
- 某個(gè)運(yùn)算符不是數(shù)字,那么結(jié)果為 NaN.
注釋:
如果運(yùn)算數(shù)都是數(shù)字,那么執(zhí)行常規(guī)的減法運(yùn)算,并返回結(jié)果.
等號(hào)和非等號(hào)
說明:
在 ECMAScript 中,等號(hào)由雙等號(hào)(==)表示,當(dāng)且僅當(dāng)兩個(gè)運(yùn)算數(shù)相等時(shí),它返回 true.非等號(hào)由感嘆號(hào)加等號(hào)(!=)表示,當(dāng)且僅當(dāng)兩個(gè)運(yùn)算數(shù)不相等時(shí),它返回 true.為確定兩個(gè)運(yùn)算數(shù)是否相等,這兩個(gè)運(yùn)算符都會(huì)進(jìn)行類型轉(zhuǎn)換.
執(zhí)行類型轉(zhuǎn)換的規(guī)則如下:
- 如果一個(gè)運(yùn)算數(shù)是 Boolean 值,在檢查相等性之前,把它轉(zhuǎn)換成數(shù)字值.false 轉(zhuǎn)換成 0,true 為 1.
- 如果一個(gè)運(yùn)算數(shù)是字符串,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把字符串轉(zhuǎn)換成數(shù)字.
- 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是字符串,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成字符串.
- 如果一個(gè)運(yùn)算數(shù)是對(duì)象,另一個(gè)是數(shù)字,在檢查相等性之前,要嘗試把對(duì)象轉(zhuǎn)換成數(shù)字.
在比較時(shí),該運(yùn)算符還遵守下列規(guī)則:
- 值 null 和 undefined 相等.
- 在檢查相等性時(shí),不能把 null 和 undefined 轉(zhuǎn)換成其他值.
- 如果某個(gè)運(yùn)算數(shù)是 NaN,等號(hào)將返回 false,非等號(hào)將返回 true.
- 如果兩個(gè)運(yùn)算數(shù)都是對(duì)象,那么比較的是它們的引用值.如果兩個(gè)運(yùn)算數(shù)指向同一對(duì)象,那么等號(hào)返回 true,否則兩個(gè)運(yùn)算數(shù)不等.
- 即使兩個(gè)數(shù)都是 NaN,等號(hào)仍然返回 false,因?yàn)楦鶕?jù)規(guī)則,NaN 不等于 NaN.
下表列出了一些特殊情況,以及它們的結(jié)果:
表達(dá)式 值
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true
全等號(hào)和非全等號(hào)
說明:
等號(hào)和非等號(hào)的同類運(yùn)算符是全等號(hào)和非全等號(hào).這兩個(gè)運(yùn)算符所做的與等號(hào)和非等號(hào)相同,只是它們?cè)跈z查相等性前,不執(zhí)行類型轉(zhuǎn)換.
全等號(hào) 由三個(gè)等號(hào)表示(===),只有在無需類型轉(zhuǎn)換運(yùn)算數(shù)就相等的情況下,才返回 true.
例如:
var sNum = "66";var iNum = 66;alert(sNum == iNum); //輸出 "true"alert(sNum === iNum); //輸出 "false"
非全等號(hào) 由感嘆號(hào)加兩個(gè)等號(hào)(!==)表示,只有在無需類型轉(zhuǎn)換運(yùn)算數(shù)不相等的情況下,才返回 true.
例如:
var sNum = "66";var iNum = 66;alert(sNum != iNum); //輸出 "false"alert(sNum !== iNum); //輸出 "true"
條件運(yùn)算符
說明:
條件運(yùn)算符是 ECMAScript 中功能最多的運(yùn)算符,它的形式與 Java 中的相同.
格式:
variable = boolean_expression ? true_value : false_value;
(注釋: 該表達(dá)式主要是根據(jù) boolean_expression 的計(jì)算結(jié)果有條件地為變量賦值.如果 Boolean_expression 為 true,就把 true_value 賦給變量;如果它是 false,就把 false_value 賦給變量.)
賦值運(yùn)算符
說明:
簡(jiǎn)單的賦值運(yùn)算符由等號(hào)(=)實(shí)現(xiàn),只是把等號(hào)右邊的值賦予等號(hào)左邊的變量.
每種主要的算術(shù)運(yùn)算以及其他幾個(gè)運(yùn)算都有復(fù)合賦值運(yùn)算符:
- 乘法/賦值(*=)
- 除法/賦值(/=)
- 取模/賦值(%=)
- 加法/賦值(+=)
- 減法/賦值(-=)
- 左移/賦值(<<=)
- 有符號(hào)右移/賦值(>>=)
- 無符號(hào)右移/賦值(>>>=)
typeof 運(yùn)算符
說明:
typeof 運(yùn)算符有一個(gè)參數(shù),即要檢查的變量或值.
對(duì)變量或值調(diào)用 typeof 運(yùn)算符將返回下列值之一:
- undefined - 如果變量是 Undefined 類型的(聲明但未初始化的變量)
- boolean - 如果變量是 Boolean 類型的
- number - 如果變量是 Number 類型的
- string - 如果變量是 String 類型的
- object - 如果變量是一種引用類型或 Null 類型的
語句流程
選擇語句:[if 語句][switch語句]
循環(huán)語句:[for語句][while語句][for..in語句][break continue語句]
選擇語句
if語句
- if 語句
說明:
在一個(gè)指定的條件成立時(shí)執(zhí)行代碼
格式:
if (條件)
{
條件成立時(shí)執(zhí)行代碼
} - if...else 語句
說明:
在指定的條件成立時(shí)執(zhí)行代碼,當(dāng)條件不成立時(shí)執(zhí)行另外的代碼
格式:
if (條件)
{
條件成立時(shí)執(zhí)行此代碼
}
else
{
條件不成立時(shí)執(zhí)行此代碼
} - if...else if....else 語句
說明:
使用這個(gè)語句可以選擇執(zhí)行若干塊代碼中的一個(gè)
格式:
if (條件1)
{
條件1成立時(shí)執(zhí)行代碼
}
else if (條件2)
{
條件2成立時(shí)執(zhí)行代碼
}
else
{
條件1和條件2均不成立時(shí)執(zhí)行代碼
}
switch 語句
說明:
使用這個(gè)語句可以選擇執(zhí)行若干塊代碼中的一個(gè).
格式:
switch(n)
{
case 1:
執(zhí)行代碼塊 1;
break;
case 2:
執(zhí)行代碼塊 2;
break;
default:
如果n即不是1也不是2,則執(zhí)行此代碼;
}
工作原理:
switch 后面的 (n) 可以是表達(dá)式,也可以(并通常)是變量.然后表達(dá)式中的值會(huì)與 case 中的數(shù)字作比較,如果與某個(gè) case 相匹配,那么其后的代碼就會(huì)被執(zhí)行.break 的作用是防止代碼自動(dòng)執(zhí)行到下一行.
循環(huán)語句
for 循環(huán)
格式:
for (變量=開始值;循環(huán)條件;變量=變量+步進(jìn)值)
{
需執(zhí)行的代碼
}
while 循環(huán)
- 格式一: while 循環(huán)
格式:
while (循環(huán)條件)
{
需執(zhí)行的代碼
} - 格式二: do...while 循環(huán)
說明:
do...while 循環(huán)是 while 循環(huán)的變種.該循環(huán)程序在初次運(yùn)行時(shí)會(huì)首先執(zhí)行一遍其中的代碼,然后當(dāng)指定的條件為 true 時(shí),它會(huì)繼續(xù)這個(gè)循環(huán).所以可以這么說,do...while 循環(huán)為執(zhí)行至少一遍其中的代碼,即使條件為 false,因?yàn)槠渲械拇a執(zhí)行后才會(huì)進(jìn)行條件驗(yàn)證
格式:
do
{
需執(zhí)行的代碼
}
while (循環(huán)條件)
For...In
說明:
- For...In 聲明用于對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作.
- for ... in 循環(huán)中的代碼每執(zhí)行一次,就會(huì)對(duì)數(shù)組的元素或者對(duì)象的屬性進(jìn)行一次操作.
格式:
for (變量 in 對(duì)象)
{
在此執(zhí)行代碼
}
注釋: “變量”用來指定變量,指定的變量可以是數(shù)組元素,也可以是對(duì)象的屬性
例子:使用 for ... in 循環(huán)遍歷數(shù)組.
<html><body><script type="text/javascript">var xvar mycars = new Array()mycars[0] = "Saab"mycars[1] = "Volvo"mycars[2] = "BMW"for (x in mycars){document.write(mycars[x] + "<br />")}</script></body></html>
中斷循環(huán)
- Break
break 命令可以終止循環(huán)的運(yùn)行,然后繼續(xù)執(zhí)行循環(huán)之后的代碼(如果循環(huán)之后有代碼的話). - Continue
continue 命令會(huì)終止當(dāng)前的循環(huán),然后從下一個(gè)值繼續(xù)運(yùn)行.
捕獲錯(cuò)誤
[try—catch][onerror事件]
當(dāng)我們?cè)诰W(wǎng)上沖浪時(shí),總會(huì)看到帶有 runtime 錯(cuò)誤的 Javascript 警告框,同時(shí)會(huì)詢問我們“是否進(jìn)行 debug?”.像這樣的錯(cuò)誤信息或許對(duì)開發(fā)人員有用,對(duì)用戶則未必.當(dāng)錯(cuò)誤發(fā)生時(shí),他們往往會(huì)選擇離開這個(gè)站點(diǎn).
本節(jié)向你講解如何捕獲和處理 Javascript 的錯(cuò)誤消息,這樣就可以為受眾提供更多的便利.
有兩種在網(wǎng)頁中捕獲錯(cuò)誤的方法:
- 使用 try...catch 語句.(在 IE5+,Mozilla 1.0,和 Netscape 6 中可用)
- 使用 onerror 事件.這是用于捕獲錯(cuò)誤的老式方法.(Netscape 3 以后的版本可用)
Try...Catch 語句
說明:
try...catch 可以測(cè)試代碼中的錯(cuò)誤.try 部分包含需要運(yùn)行的代碼,而 catch 部分包含錯(cuò)誤發(fā)生時(shí)運(yùn)行的代碼.
語法:
try
{
//在此運(yùn)行代碼
}
catch(err)
{
//在此處理錯(cuò)誤
}
注意:try...catch 使用小寫字母.大寫字母會(huì)出錯(cuò).
Throw:
聲明:
throw 聲明的作用是創(chuàng)建 exception(異常).你可以把這個(gè)聲明與 try...catch 聲明配合使用,以達(dá)到控制程序流并產(chǎn)生精確錯(cuò)誤消息的目的.
語法:
throw(exception);//exception 可以是字符串,整數(shù),邏輯值或者對(duì)象.
注意:使用小寫字母編寫 throw.使用大寫字母會(huì)出錯(cuò)!
例子:
<html><body><script type="text/javascript">var x=prompt("Enter a number between 0 and 10:","")try{ if(x>10) throw "Err1"else if(x<0)throw "Err2"} catch(er){if(er=="Err1") alert("Error! The value is too high")if(er == "Err2") alert("Error! The value is too low") }</script></body></html>
onerror 事件
說明:
只要頁面中出現(xiàn)腳本錯(cuò)誤,就會(huì)產(chǎn)生 onerror 事件.
如果需要利用 onerror 事件,就必須創(chuàng)建一個(gè)處理錯(cuò)誤的函數(shù).你可以把這個(gè)函數(shù)叫作 onerror 事件處理器 (onerror event handler).這個(gè)事件處理器使用三個(gè)參數(shù)來調(diào)用:msg(錯(cuò)誤消息),url(發(fā)生錯(cuò)誤的頁面的 url),line(發(fā)生錯(cuò)誤的代碼行).
語法:
onerror=handleErrfunction handleErr(msg,url,l)
{
//Handle the error here
return true or false
}
瀏覽器是否顯示標(biāo)準(zhǔn)的錯(cuò)誤消息,取決于 onerror 的返回值.如果返回值為 false,則在控制臺(tái) (JavaScript console) 中顯示錯(cuò)誤消息.反之則不會(huì).
函數(shù)
格式:
function 函數(shù)名(var1,var2,...,varX)
{
代碼...
return 語句;
}
說明:
- var1, var2 等指的是傳入函數(shù)的變量或值,若沒有參數(shù)可以在函數(shù)名后面直接跟 "()"
- "{" 和 "}" 定義了函數(shù)的開始和結(jié)束即 "{" 和 "}" 中間為函數(shù)體.
- 無參數(shù)的函數(shù)必須在其函數(shù)名后加括號(hào):
- return 語句用來規(guī)定從函數(shù)返回的值.若無返回值 return 語句可以省略
arguments 對(duì)象:
- 可以用 arguments 對(duì)象進(jìn)行訪問參數(shù),arguments[0]為第一參數(shù),以此類推
- arguments 具有屬性 length 記錄參數(shù)個(gè)數(shù)
Function 對(duì)象的 length 屬性:
- 如前所述,函數(shù)屬于引用類型,所以它們也有屬性和方法.
- ECMAScript 定義的屬性 length 聲明了函數(shù)期望的參數(shù)個(gè)數(shù)
function 對(duì)象:
- 盡管可以用 function 構(gòu)造函數(shù)創(chuàng)建函數(shù),但最好不要使用它,因?yàn)橛盟x函數(shù)比用傳統(tǒng)方式要慢的多.不過,所有函數(shù)都應(yīng)看做是Function類的實(shí)例
類
[Number類][String類][Array類][Date類][RegExp類][Boolean類][Object類][強(qiáng)制轉(zhuǎn)換]
Number類
方法
- valueOf()獲得Number原始值
- toString() 轉(zhuǎn)換成字符串
- toFixed() 顯示幾位小數(shù)
- toExponential() 用科學(xué)計(jì)數(shù)方法顯示數(shù),參數(shù)為顯示的小數(shù)位數(shù)
String類
屬性
方法
- charAt() 返回的是包含指定位置處的字符的字符串
- concat() 把一個(gè)或者多個(gè)字符串連接到String對(duì)象上
- indexOf() 指定的子串在字符串中的第一個(gè)出現(xiàn)的開始位置
- lastIndexOf() 指定的子串在字符串中的最后一個(gè)出現(xiàn)的開始位置
- localeCompare() 與指定的字符串進(jìn)行比較,要是大于返回1,等于返回0,小于返回-1
- slice()與substring() 返回指定的子字符串,當(dāng)參數(shù)為負(fù)數(shù)時(shí)兩者有差
var s1 = new String("hello world");s1.slice(-3); //"rld"s1.substring(-3); //"hello world"s1.slice(3,-4); //"lo w"s1.substring(3,-4); //"hel"
- toLowerCase() 與 toLocaleLowerCase() 把字符串都轉(zhuǎn)換為小寫字母
- toUpperCase() 與 toLocaleUpperCase() 把字符串都轉(zhuǎn)換為大寫字母
- split() 一個(gè)參數(shù),以此參數(shù)給定的字符串來分隔字符串,返回一個(gè)數(shù)組對(duì)象
var sColors = "green";var aColors = sColors.split("");alert(aColors.toString()); //outputs "g,r,e,e,n"
Array類
作用:
- 使用單獨(dú)的變量名來存儲(chǔ)一系列的值.
注意:
- 數(shù)組最多可以存放4294967295項(xiàng),這應(yīng)該可以滿足大多數(shù)程序設(shè)計(jì)的需要,如果要添加更多的項(xiàng)會(huì)發(fā)生異常
聲明:
var aValue1 = new Array(20); //20 為數(shù)組長度var aValue2 = new Array(); //動(dòng)態(tài)數(shù)組var aValue3 = new Array("one","two","three"); //聲明數(shù)組并顯示初始化數(shù)組元素
屬性:
方法:
- toString() 返回所有元素值轉(zhuǎn)換變成字符串后,并從頭到尾連接起來,元素與元素中間并插入 ",".
- valueOf() 大致同上
- join() 連接字符串,一個(gè)參數(shù)(即數(shù)據(jù)項(xiàng)中使用的字符串)
- concat() 把一個(gè)或者多個(gè)元素連接到數(shù)組對(duì)象上
- slice() 返回具有特定項(xiàng)的數(shù)組,類似String類中的slice方法
- push() 在數(shù)組末尾添加元素
- pop() 刪除數(shù)組末尾元素
- shift() 刪除數(shù)組中第一個(gè)元素,并將其值作為函數(shù)的返回值
- unshift() 在最開始出插入一個(gè)元素
- sort() 給數(shù)組元素排序(順序)
- reverse() 給數(shù)組元素排序(逆序)
- splice()
- 刪除 -- 只需要兩個(gè)參數(shù)
arr.splice(0,2); //刪除從 0 開始的兩項(xiàng)元素
- 替換并刪除 -- 三個(gè)參數(shù)以上,第一個(gè)表示插入位置,第二個(gè)表示要?jiǎng)h除的元素個(gè)數(shù),第三個(gè)開始為元素的值
arr.splice(0,0,"red","green"); //在 0 這個(gè)位置插入兩個(gè)元素,元素值為:"red","green"arr.splice(0,2,"red","green"); //在 0 處開始刪除后面 2 項(xiàng)元素,然后插入元素"red","green"
Date類
定義日期:
Date 對(duì)象用于處理日期和時(shí)間.可以通過 new 關(guān)鍵詞來定義 Date 對(duì)象.以下代碼定義了名為 d 的 Date 對(duì)象:
var d = new Date(); // 用當(dāng)前日期和事件創(chuàng)建的Date對(duì)象
注釋:Date 對(duì)象自動(dòng)使用當(dāng)前的日期和時(shí)間作為其初始值.
方法:
- parse() 接受字符串為參數(shù),把該字符串轉(zhuǎn)換為日期,返回其離1970年1月1日凌晨12點(diǎn)的毫秒數(shù)
- mm/dd/yyyy (6/13/2004)
- mmmm dd,yyyy (January 12,2004)
var d = new Date(Date.parse("May 25,2004"));
- UTC() 接受的參數(shù)順序是 年,月,日,小時(shí),分,秒和毫秒.(年月必須有,其他參數(shù)可選)
var d = new Date(Date.UTC(2004,1,5));
- valueOf() 返回日期的毫秒表示
- toString() 返回由實(shí)現(xiàn)特定的格式顯示 Date 的日期和時(shí)間
- toDateString() 以實(shí)現(xiàn)的特定的格式顯示 Date 的日期部分(月,日,年)
- toTimeString() 以實(shí)現(xiàn)的特定的格式顯示 Date 的時(shí)間部分(時(shí),分,秒)
- toLocaleString() 以地點(diǎn)特定的格式顯示 Date 的日期和時(shí)間
- toLocaleDateString() 以地點(diǎn)特定的格式顯示 Date 的日期部分
- toLocaleTimeString() 以地點(diǎn)特定的格式顯示 Date 的時(shí)間部分
- getTime() 返回日期的毫秒表示
- setTime(milliseconds) 設(shè)置日期的毫秒表示
- getFullYear() 返回用四位數(shù)表示的日期的年份(如2004而不只是04)
- getUTCFullYear() 返回用四位數(shù)字表示的UTC日期的年份
- setFullYear(year) 設(shè)置日期的年份,參數(shù)必須是四位數(shù)字的年份值
- setUTCFullYear(year) 返回日期的年份,參數(shù)必須是四位數(shù)字的年份值
- getMonth() 返回日期的月份值,由數(shù)字0(1月)到11(12月)表示
- getUTCMonth() 返回UTC日期的月份值,由數(shù)字0(1月)到11(12月)表示
- setMonth(month) 設(shè)置日期的月份為大于等于0的數(shù)字.對(duì)應(yīng)大于11的數(shù)字,開始累積年數(shù)
- setUTCMonth(month) 設(shè)置UTC日期的月份為大于等于0的數(shù)組,對(duì)應(yīng)大于11的數(shù)字,開始累積年數(shù)
- getDate() 返回日期該月中的某天
- getUTCDate() 返回該UTC日期該月中的某天
- setDate(date) 設(shè)置該日期該月的某天
- setUTCDate(date) 設(shè)置該UTC日期該月的某天
- getDay() 返回日期為星期幾
- getUTCDay() 返回該UTC日期為星期幾
- setDay(day) 設(shè)置該日期為星期幾
- setUTCDay(day) 設(shè)置該UTC日期為星期幾
- getHours() 返回日期中的小時(shí)值
- getUTCHours() 返回UTC日期中的小時(shí)值
- setHours(hours) 設(shè)置日期中的小時(shí)值
- setUTCHours(hours) 設(shè)置日期中的小時(shí)值
- getMinutes() 返回日期中的分鐘值
- getUTCMinutes() 返回UTC日期中的分鐘值
- setMinutes(minutes) 設(shè)置日期中的分鐘值
- setUTCMinutes(minutes) 設(shè)置UTC日期中的分鐘值
- getSeconds() 返回日期中的秒鐘值
- getUTCSeconds() 返回UTC日期中的秒鐘值
- setSeconds(seconds) 設(shè)置日期中的秒鐘值
- setUTCSeconds(seconds) 設(shè)置UTC日期中的秒鐘值
- getMilliseconds() 返回日期中的毫秒值
- getUTCMillisenconds() 返回UTC日期中的毫秒值
- setMilliSeconds(milliseconds) 設(shè)置日期中的毫秒值
- getUTCMillisenconds(milliseconds) 設(shè)置UTC日期中的毫秒值
RegExp 類
[說明][作用][聲明][方法][元字符][特殊字符][正則表達(dá)式類型][量詞以及量詞類型]
說明:
作用:
- 當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來描述要檢索的內(nèi)容.RegExp 就是這種模式.
- 簡(jiǎn)單的模式可以是一個(gè)單獨(dú)的字符.
- 更復(fù)雜的模式包括了更多的字符,并可用于解析,格式檢查,替換等等.
- 您可以規(guī)定字符串中的檢索位置,以及要檢索的字符類型,等等.
聲明:
var ReCat = new RegExp("cat"); //這個(gè)正則表達(dá)式只會(huì)匹配第一個(gè)出現(xiàn)的單詞"cat"而且,它是區(qū)分大小寫的var ReCat = new RegExp("cat","g"); //收索字符串中所有的"cat",而且區(qū)分大小寫var ReCat = new RegExp("cat","gi"); //收索字符串中所有的"cat",但是不區(qū)分大小寫var reCat = /cat/gi //效果等他上面一個(gè)句子/********************************************************正則表達(dá)式字面由一條斜桿開始,跟著是字符匹配字符串模式,然后是另一條斜桿.如果還有指定二外的處理指令,直接跟在第二個(gè)斜桿的后面********************************************************/
方法:
- test()方法 給定一個(gè)字符串匹配這個(gè)模式,如果匹配成功返回true,否則返回false;
元字符:
( { \ ^ $ | ) ? * + .
任何時(shí)候要在正則表達(dá)式中使用這些元字符,都必須對(duì)它們進(jìn)行轉(zhuǎn)義.就是在前面加一個(gè) '\'
使用特殊字符:
- \x62 ASCII碼十六進(jìn)制表示法,表示的是字符 'b'
- \142 ASCII碼八進(jìn)制表示法,表示的是字符 'b'
- \u0062 Unicode碼十六進(jìn)制表示法(必須是四位十六進(jìn)制表示形式),表示的是字符 'b'
- \t 制表符
- \n 換行符
- \r 回車符
- \f 換頁符
- \a alert字符
- \e escape字符
- \cX 與X相對(duì)應(yīng)的控制字符
- \b 回退字符
- \v 垂直制表符
- \0 空字符
正則表達(dá)式類型:
量詞:
代碼 描述
出現(xiàn)零次或者一次
* 出現(xiàn)零次或者多次(任意次)
+ 出現(xiàn)一次或者多次(只少出現(xiàn)一次)
{n} 一共只出現(xiàn)n次
{n,m} 至少出現(xiàn)n次但不超過m次
{n,} 至少出現(xiàn)n次
貪婪的,惰性的和支配性的量詞
- 貪婪量詞
先看整個(gè)字符串是否匹配,如果沒有發(fā)現(xiàn)匹配,它去掉該字符串中的最后一個(gè)字符,并在嘗試.如果還是沒有發(fā)現(xiàn)匹配,那么在次去掉最后一個(gè)字符,在這個(gè)過程會(huì)一直重直到發(fā)現(xiàn)一個(gè)匹配或者字符串不剩任何字符,到目前為止得到的所有量詞都是貪婪的 - 惰性量詞
先看字符串中的第一個(gè)字符是否匹配,如果單獨(dú)這個(gè)字符還不夠就讀入下一個(gè)字符,組成兩個(gè)字符的字符串.如果還沒有發(fā)現(xiàn)匹配,惰性量詞繼續(xù)從字符串中添加字符知道發(fā)現(xiàn)匹配或者整個(gè)字符串都檢查過沒有匹配, - 支配量詞
只嘗試匹配整個(gè)字符串.如果整個(gè)字符串不能產(chǎn)生匹配,不做任何嘗試 - 三種比較
貪婪 惰性 支配 描述
+ 出現(xiàn)零次或者一次
* *? *+ 出現(xiàn)零次或者多次(任意次)
+ +? ++ 出現(xiàn)一次或者多次(只少出現(xiàn)一次)
{n} {n}? {n}+ 一慈寧宮出現(xiàn)n次
{n,m} {n,m}? {n,m}+ 至少出現(xiàn)n次但不超過m次
{n,} {n,}? {n,}+ 至少出現(xiàn)n次
Boolean(邏輯)對(duì)象
- 用于將非邏輯值轉(zhuǎn)換為邏輯值(true 或者 false).
- 如果邏輯對(duì)象無初始值或者其值為 0,-0,null,"",false,undefined 或者 NaN,那么對(duì)象的值為 false.否則,其值為 true(即使當(dāng)自變量為字符串 "false" 時(shí))!
Object 對(duì)象
說明:
Object 對(duì)象自身用處不大,不過在了解其他類之前,還是應(yīng)該了解它.因?yàn)?ECMAScript 中的 Object 對(duì)象與 Java 中的 java.lang.Object 相似,ECMAScript 中的所有對(duì)象都由這個(gè)對(duì)象繼承而來,Object 對(duì)象中的所有屬性和方法都會(huì)出現(xiàn)在其他對(duì)象中,所以理解了 Object 對(duì)象,就可以更好地理解其他對(duì)象.
屬性:
- constructor 對(duì)創(chuàng)建對(duì)象的函數(shù)的引用(指針).對(duì)于 Object 對(duì)象,該指針指向原始的 Object() 函數(shù).
- Prototype 對(duì)該對(duì)象的對(duì)象原型的引用.對(duì)于所有的對(duì)象,它默認(rèn)返回 Object 對(duì)象的一個(gè)實(shí)例.
方法:
- hasOwnProperty(property) 判斷對(duì)象是否有某個(gè)特定的屬性.必須用字符串指定該屬性.(例如,o.hasOwnProperty("name"))
- IsPrototypeOf(object) 判斷該對(duì)象是否為另一個(gè)對(duì)象的原型.
- PropertyIsEnumerable 判斷給定的屬性是否可以用 for...in 語句進(jìn)行枚舉.
- ToString() 返回對(duì)象的原始字符串表示.對(duì)于 Object 對(duì)象,ECMA-262 沒有定義這個(gè)值,所以不同的 ECMAScript 實(shí)現(xiàn)具有不同的值.
- ValueOf() 返回最適合該對(duì)象的原始值.對(duì)于許多對(duì)象,該方法返回的值都與 ToString() 的返回值相同
強(qiáng)制轉(zhuǎn)換
Boolean(value) 把給定值轉(zhuǎn)換為Boolean
var b1 = Boolean(""); //falsevar b2 = Boolean("hi"); //truevar b3 = Boolean(10); //truevar b4 = Boolean(null); //falsevar b5 = Boolean(0); //falsevar b6 = Boolean(new object()); //true
Number(value) 把給定值轉(zhuǎn)換為數(shù)字
Nuber(false) //0Nuber(true) //1Nuber(undefined) //NaNNuber(null) //0Nuber("5.5") //5.5Nuber("56") //56Nuber("5.6.7") //NaNNuber(new object()) //NaNNuber(100) //100
String(value) 把給定值轉(zhuǎn)換為字符串
var s1= String(null); //"null"var oNull = null;var s2= oNull.toString(); //won't work,cause an error
對(duì)象
[本地對(duì)象][宿主對(duì)象][內(nèi)置對(duì)象][Math對(duì)象][對(duì)象廢除]
本地對(duì)象
- Object
- Function
- Array
- String
- Boolean
- Number
- Date
- RegExp
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeErrof
- URIError
宿主對(duì)象
- 所有非本地對(duì)象都是宿主對(duì)象,所有BOM和DOM對(duì)象都是宿主對(duì)象
- ECMAScript 中只有公有作用域
- ECMAScript 沒有靜態(tài)作用域
- 關(guān)鍵字 this 總指向調(diào)用該方法的對(duì)象
- 對(duì)象屬性可以在對(duì)象創(chuàng)建后動(dòng)態(tài)定義
內(nèi)置對(duì)象
說明:
獨(dú)立于宿主環(huán)境的所有對(duì)象,每個(gè)內(nèi)置對(duì)象都是本地對(duì)象
Global對(duì)象:
方法:
- isNaN()
- isFinite()
- parseInt()
- parseFloat()
- encodeURI() 用于處理完整的URI
- encodeURIComponet() 用于處理片段的URI
屬性:
- undefined Undefined類型的字面量
- NaN 非數(shù)的專用數(shù)值
- Infinity 無窮大值的專用數(shù)值
- Object Object 的構(gòu)造函數(shù)
- Array Array的構(gòu)造函數(shù)
- Function Function的構(gòu)造函數(shù)
- Boolean Boolean的構(gòu)造函數(shù)
- String String的構(gòu)造函數(shù)
- Number Number的構(gòu)造函數(shù)
- Date Date的構(gòu)造函數(shù)
- RegExp RegExp的構(gòu)造函數(shù)
- Error Error的構(gòu)造函數(shù)
- EvalError EvalError的構(gòu)造函數(shù)
- RangeError RangeError的構(gòu)造函數(shù)
- ReferenceError ReferenceError的構(gòu)造函數(shù)
- SyntaxError SyntaxError的構(gòu)造函數(shù)
- TypeError TypeError的構(gòu)造函數(shù)
- URIError URIError的構(gòu)造函數(shù)
Math對(duì)象
屬性:
- E 值e,自然對(duì)數(shù)的底
- LN10 10的自然對(duì)數(shù)
- LN2 2的自然對(duì)數(shù)
- LOG2E 以2為底E的對(duì)數(shù)
- LOG10E 以10為底的對(duì)數(shù)
- PI 值π
- SQRT1_2 1/2的平方根
- SQRT2 2的平方根
方法:
- max(a,b, ...) 返回一組數(shù)的最大值
- min(a,b, ...) 返回一組數(shù)的最小值
- abs(x) 返回?cái)?shù)值的絕對(duì)值
- ceil(x) 返回x向上舍入到最接近的值 (var a = Math.ceil(25.5); //a=26)
- floor(x) 返回x向下舍入到最接近的值 (var a = Math.floor(25.5); //a=25)
- round(x) 返回x的標(biāo)準(zhǔn)的四舍五入取舍方法后的值 (var a = Math.round(25.5); //a=26)
- exp(x) 返回Math.E的x次方
- log(x) 返回x的自然對(duì)數(shù)
- pow(x,y) 返回x,的y次方
- sqrt(x) 返回x的平方根
- acos(x) 返回x的反余弦值
- asin(x) 返回x的反正弦值
- atan(x) 返回x的反正切值
- atan2(y,x) 返回 y/x的反余弦值
- cos(x) 返回x的余弦值
- sin(x) 返回x的正弦值
- tan(x) 返回x的正切值
- random() 返回一個(gè)0到1直接的隨機(jī)數(shù).不包括0與1
對(duì)象廢除
- ECMAScript 擁有無用存儲(chǔ)單元收集程序(garbage collection routine),意味著不必專門銷毀對(duì)象來釋放內(nèi)存。當(dāng)再?zèng)]有對(duì)對(duì)象的引用時(shí),稱該對(duì)象被廢除(dereference)了。運(yùn)行無用存儲(chǔ)單元收集程序時(shí),所有廢除的對(duì)象都被銷毀。每當(dāng)函數(shù)執(zhí)行完它的代碼,無用存儲(chǔ)單元收集程序都會(huì)運(yùn)行,釋放所有的局部變量,還有在一些其他不可預(yù)知的情況下,無用存儲(chǔ)單元收集程序也會(huì)運(yùn)行。
- 把對(duì)象的所有引用都設(shè)置為 null,可以強(qiáng)制性地廢除對(duì)象,廢除對(duì)象的所有引用時(shí)要注意,如果一個(gè)對(duì)象有兩個(gè)或者多個(gè)引用,則要正確廢除該對(duì)象,必須將其所有引用都設(shè)置為null
- delete 運(yùn)算符不能刪除開發(fā)者未定義的屬性和方法
事件
[事件][鼠標(biāo)事件][鍵盤事件][HTML事件][消息框]
事件
- JavaScript 使我們有能力創(chuàng)建動(dòng)態(tài)頁面。事件是可以被 JavaScript 偵測(cè)到的行為。
- 網(wǎng)頁中的每個(gè)元素都可以產(chǎn)生某些可以觸發(fā) JavaScript 函數(shù)的事件。比方說,我們可以在用戶點(diǎn)擊某按鈕時(shí)產(chǎn)生一個(gè) onClick 事件來觸發(fā)某個(gè)函數(shù)。事件在 HTML 頁面中定義。
鼠標(biāo)事件
事件類型:
- onclick 用戶點(diǎn)擊鼠標(biāo)左鍵時(shí)發(fā)生,當(dāng)用戶的焦點(diǎn)在按鈕上,并按回車鍵,同樣會(huì)觸發(fā)這個(gè)事件
- ondblclick 用戶雙擊鼠標(biāo)左鍵時(shí)發(fā)生
- onmousedown 用戶點(diǎn)擊任意一個(gè)鼠標(biāo)按鈕時(shí)發(fā)生
- onmouseout 鼠標(biāo)指針在摸個(gè)元素上,并且用戶正要移出元素邊界時(shí)發(fā)生
- onmouseover 鼠標(biāo)移出摸個(gè)元素,到另一個(gè)元素上時(shí)發(fā)生
- onmouseup 用戶松開任意一個(gè)按鈕時(shí)發(fā)生
- onmousemove 鼠標(biāo)移動(dòng)時(shí)候發(fā)生
每個(gè)鼠標(biāo)事件都會(huì)給以下event對(duì)象的屬性填入值:
- 坐標(biāo)屬性(clientX,clientY,screenX,screenY,pageX,pageY)
- type屬性
- target(DOM) 或者srcElement(IE)屬性
- shifKey,ctrlkey,altKey和metaKey(DOM)屬性
- button屬性(只有在mousedown,mouseover,mouseout,mousemove和mouseup事件中)
點(diǎn)擊鼠標(biāo)左鍵時(shí)候發(fā)生的事件的順序:
- mousedown
- mouseup
- click
- mousedown
- mouseup
- click
- dblclick
鍵盤事件
事件類型:
- onkeydown 用戶在鍵盤上按下某個(gè)按鍵時(shí)候發(fā)生
- onkeypress 用戶按下一個(gè)按鍵,并產(chǎn)生一個(gè)字符時(shí)發(fā)生
- onkeyup 用戶釋放按著的按鍵時(shí)發(fā)生
對(duì)每個(gè)鍵盤時(shí)間,會(huì)填入以下事件屬性:
- type屬性
- keyCode 屬性
- charCode 屬性(僅DOM)
- target(DOM) 或者srcElement(IE)屬性
- shifKey,ctrlkey,altKey和metaKey(DOM)屬性
順序:
- 用戶按一次某字符按鍵時(shí)
- 如果用戶按一次某非字符按鍵(例如Shift),會(huì)按一下順序發(fā)生事件
HTML事件
- load事件--onload頁面完全載入后,在window對(duì)象上觸發(fā)
- unload事件--onunload 頁面完全卸載后,在window對(duì)象上觸發(fā)
- abort事件--onabort 用戶停止下載過程時(shí),如果<object/>對(duì)象還未完全載入,就在其上觸發(fā)
- error事件--onerrorJavaScript腳本出錯(cuò)時(shí),在window對(duì)象上觸發(fā);某個(gè)<img/>的指定圖像無法載入時(shí),在其上觸發(fā);或<object/>元素?zé)o法載入時(shí)觸發(fā);或者框架集中一個(gè)或多個(gè)框架無法載入時(shí)觸發(fā)
- select事件--onselect用戶選擇了文本框中的一個(gè)或多個(gè)字符時(shí)觸發(fā)(<input/>或者<textarea/>)
- change事件--onchange 文本框(<input/>或者<textarea/>)失去焦點(diǎn)后內(nèi)容發(fā)生改變時(shí)觸發(fā),某個(gè)<select/>元素的值發(fā)生改變時(shí)觸發(fā)
- submit事件--onsubmit 點(diǎn)擊提交表單按鈕(<input type="submit"/>)時(shí),在<form/>上觸發(fā)
- reset事件--onreset點(diǎn)擊重置按鈕(<input type="reset"/>)時(shí),在<form/>上觸發(fā)
- resize事件--onresize窗口或者框架的大小發(fā)生改變時(shí)候觸發(fā)
- scroll事件--onscroll用戶在任何帶滾動(dòng)條的元素上滾動(dòng)時(shí)候它會(huì)觸發(fā)
- focus事件--onfocus任何元素或者窗口本觸發(fā)身獲取焦點(diǎn)(用戶點(diǎn)擊它,Tab鍵切換到它或者任何其他與它交互的手段)時(shí)觸發(fā)
- blur事件--onblur任何元素或者窗口本身失去焦點(diǎn)時(shí)候觸發(fā)
消息框類型
- 警告框
- 說明:
- 警告框經(jīng)常用于確保用戶可以得到某些信息。
- 當(dāng)警告框出現(xiàn)后,用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作。
- 語法:
- 確認(rèn)框
- 說明:
- 確認(rèn)框用于使用戶可以驗(yàn)證或者接受某些信息。
- 當(dāng)確認(rèn)框出現(xiàn)后,用戶需要點(diǎn)擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作。
- 如果用戶點(diǎn)擊確認(rèn),那么返回值為 true。如果用戶點(diǎn)擊取消,那么返回值為 false。
- 語法:
- 提示框
- 說明:
- 提示框經(jīng)常用于提示用戶在進(jìn)入頁面前輸入某個(gè)值。
- 當(dāng)提示框出現(xiàn)后,用戶需要輸入某個(gè)值,然后點(diǎn)擊確認(rèn)或取消按鈕才能繼續(xù)操縱。
- 如果用戶點(diǎn)擊確認(rèn),那么返回值為輸入的值。如果用戶點(diǎn)擊取消,那么返回值為 null。
- 語法:
參考鏈接:
JavaScript 教程:
http://www.w3school.com.cn/js/pro_js_implement.asp
http://www.w3school.com.cn/js/index.asp
http://www.w3school.com.cn/js/js_reference.asp
ECMAScript 教程:
http://www.w3school.com.cn/js/pro_js_syntax.asp