JavaScript 具有如下特征:
一段 JavaScript 腳本由包含在網(wǎng)頁頁面中 <script>... </script> 標(biāo)簽內(nèi)的 JavaScript 語句組成。
編程人員可以隨意將由 <script> 標(biāo)簽包含著的 JavaScript 腳本置于網(wǎng)頁的任意位置,但是通常都會放在 <head> 標(biāo)簽內(nèi)。
<script> 標(biāo)記用來讓瀏覽器明白這個標(biāo)簽之間的語句需要作為腳本來解釋。所以,JavaScript 腳本可以簡單的按照如下形勢來表示:
<script ...>
JavaScript code
</script
<script> 標(biāo)簽有兩個很重要的屬性:
所以 JavaScript 片段是如下形式:
<script language="javascript" type="text/javascript">
JavaScript code
</script>
我們試著利用 JavaScript 腳本寫一個打印 “Hello word” 的功能。
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
document.write("Hello World!")
//-->
</script>
</body>
</html>
上面的腳本會顯示如下結(jié)果:
Hello World!
JavaScript編譯器會忽略掉腳本中的所有空白、縮進(jìn)符、換行符。
因此,程序員可以在腳本中自用使用空格、縮進(jìn)和換行符,這樣程序員就可以隨意縮進(jìn)格式化程序格式,以便代碼更易于閱讀和理解。
與 C、C++ 和 Java一樣,通常 JavaScript 語句以分號結(jié)尾。但是, JavaScript 允許在每行只有一句腳本的情況下省略分號。比如,下方的腳本就是可以省略分號的:
<script language="javascript" type="text/javascript">
<!--
var1 = 10
var2 = 20
//-->
</script
但是一行中存在多個腳本語句時,分號是不能省略的,比如:
<script language="javascript" type="text/javascript">
<!--
var1 = 10; var2 = 20;
//-->
</script>
注意:使用分號是一個比較實(shí)用的編程習(xí)慣
JavaScript是一門大小寫敏感的語言。這意味著關(guān)鍵詞、變量、函數(shù)名及其他任何標(biāo)識符在輸入時都要保持一樣的書寫格式。
所以,Time,TIme 和 TIME 在 JavaScript 中表示不同的意思。
注意:在編寫JavaScript腳本時一定要注意變量和函數(shù)名的書寫。
JavaScript 同樣支持 C 和 C++ 那樣的注釋方式:
在 HTML 文件中何處書寫 JavaScript 腳本是非常靈活的。但是,通常情況下都會將腳本書寫在 HTML 文件中的如下位置內(nèi):
<head>...</head>內(nèi) <body>...</body>內(nèi) <body>...</body>和<head>...</head>同時書寫 <head>...</head>內(nèi) JavaScript中可以市容下述三種數(shù)據(jù)類型:
JavaScript也支持另外兩個常用類型:null和undefined,這兩個類型均僅限定一個單一的值。
和其他可編程語言相同,JavaScript也有“變量”的概念。“變量”可以認(rèn)為是有名字的容器。你可以將數(shù)據(jù)置于這些容器中,然后通過容器的名稱就可以知道數(shù)據(jù)的類型。
值得注意的是,在JavaScript編程過程中,必須先聲明一個變量,這個變量才能被使用。
此外,變量是通過“var”來聲明的,例子如下:
<script type="text/javascript">
<!--
var money;
var name;
//-->
</script>
一個變量的作用域就是該變量定義后在程序中的作用范圍。JavaScript變量有兩個變量作用域。
JavaScript中變量的命名規(guī)則如下:
下面是JavaScript中的保留關(guān)鍵字。他們不能用來命名JavaScript中的變量、行數(shù)、方法、循環(huán)標(biāo)簽或任何對象名稱。
| abstract | else | instanceof | switch |
| boolean | enum | int | synchronized |
| break | export | interface | this |
| byte | extends | long | throw |
| case | FALSE | native | throws |
| catch | final | new | transient |
| char | finally | null | TRUE |
| class | float | package | try |
| const | for | private | typeof |
| continue | function | protected | var |
| debugger | goto | public | void |
| default | if | return | volatile |
| delete | implements | short | while |
| do | import | static | with |
| double | in | super |
JavaScript語言支持以下算術(shù)運(yùn)算符
給定 A=10,B=20,下面的表格解釋了這些算術(shù)運(yùn)算符:
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| + | 兩個運(yùn)算數(shù)相加 | A + B = 30 |
| - | 第一個運(yùn)算數(shù)減去第二個運(yùn)算數(shù) | A - B = -10 |
| * | 運(yùn)算數(shù)相乘 | A * B = 200 |
| / | 分子除以分母 | B / A = 2 |
| % | 模數(shù)運(yùn)算符,整除后的余數(shù) | B % A = 0 |
| ++ | 增量運(yùn)算符,整數(shù)值逐次加1 | A++ = 11 |
| -- | 減量運(yùn)算符,整數(shù)值逐次減1 | A-- = 9 |
JavaScript語言支持以下比較運(yùn)算符
給定 A=10,B=20,下面的表格解釋了這些比較運(yùn)算符:
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| == | 檢查兩個運(yùn)算數(shù)的值是否相等,如果是,則結(jié)果為true | A == B 為false |
| != | 檢查兩個運(yùn)算數(shù)的值是否相等,如果不相等,則結(jié)果為true | A != B 為true |
| > | 檢查左邊運(yùn)算數(shù)是否大于右邊運(yùn)算數(shù),如果是,則結(jié)果為true | A > B 為false |
| < | 檢查左邊運(yùn)算數(shù)是否小于右邊運(yùn)算數(shù),如果是,則結(jié)果為true | A < B 為true |
| >= | 檢查左邊運(yùn)算數(shù)是否大于或者等于右邊運(yùn)算數(shù),如果是,則結(jié)果為true | A >= B 為false |
| <= | 檢查左邊運(yùn)算數(shù)是否小于或者等于運(yùn)算數(shù),如果是,則結(jié)果為true | A <= B 為true |
JavaScript語言支持以下邏輯運(yùn)算符
給定 A=10,B=20,下面的表格解釋了這些邏輯運(yùn)算符
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| && | 稱為邏輯與運(yùn)算符。如果兩個運(yùn)算數(shù)都非零,則結(jié)果為true。 | A && B 為true |
| || | 稱為邏輯或運(yùn)算符。如果兩個運(yùn)算數(shù)中任何一個非零,則結(jié)果為true。 | A || B 為 true |
| ! | 稱為邏輯非運(yùn)算符。用于改變運(yùn)算數(shù)的邏輯狀態(tài)。如果邏輯狀態(tài)為true,則通過邏輯非運(yùn)算符可以使邏輯狀態(tài)變?yōu)閒alse | !(A && B) 為false |
JavaScript語言支持以下邏輯運(yùn)算符
給定 A=2,B=3,下面的表格解釋了這些邏輯運(yùn)算符
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| & | 稱為按位與運(yùn)算符。它對整型參數(shù)的每一個二進(jìn)制位進(jìn)行布爾與操作。 | A & B = 2 . |
| | | 稱為按位或運(yùn)算符。它對整型參數(shù)的每一個二進(jìn)制位進(jìn)行布爾或操作。 | A | B = 3. |
| ^ | 稱為按位異或運(yùn)算符。它對整型參數(shù)的每一個二進(jìn)制位進(jìn)行布爾異或操作。異或運(yùn)算是指第一個參數(shù)或者第二個參數(shù)為true,并且不包括兩個參數(shù)都為true的情況,則結(jié)果為true。 | (A ^ B) = 1. |
| ~ | 稱為按位非運(yùn)算符。它是一個單運(yùn)算符,對運(yùn)算數(shù)的所有二進(jìn)制位進(jìn)行取反操作。 | ~B = -4 . |
| << | 稱為按位左移運(yùn)算符。它把第一個運(yùn)算數(shù)的所有二進(jìn)制位向左移動第二個運(yùn)算數(shù)指定的位數(shù),而新的二進(jìn)制位補(bǔ)0。將一個數(shù)向左移動一個二進(jìn)制位相當(dāng)于將該數(shù)乘以2,向左移動兩個二進(jìn)制位相當(dāng)于將該數(shù)乘以4,以此類推。 | A << 1 = 4. |
| >> | 稱為按位右移運(yùn)算符。它把第一個運(yùn)算數(shù)的所有二進(jìn)制位向右移動第二個運(yùn)算數(shù)指定的位數(shù)。為了保持運(yùn)算結(jié)果的符號不變,左邊二進(jìn)制位補(bǔ)0或1取決于原參數(shù)的符號位。如果第一個運(yùn)算數(shù)是正的,運(yùn)算結(jié)果最高位補(bǔ)0;如果第一個運(yùn)算數(shù)是負(fù)的,運(yùn)算結(jié)果最高位補(bǔ)1。將一個數(shù)向右移動一位相當(dāng)于將該數(shù)乘以2,向右移動兩位相當(dāng)于將該數(shù)乘以4,以此類推。 | A >> 1 = 1. |
| >>> | 稱為0補(bǔ)最高位無符號右移運(yùn)算符。這個運(yùn)算符與>>運(yùn)算符相像,除了位移后左邊總是補(bǔ)0. | A >>> = 1. |
JavaScript語言支持以下賦值運(yùn)算符
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| = | 簡單賦值運(yùn)算符,將右邊運(yùn)算數(shù)的值賦給左邊運(yùn)算數(shù) | C = A + B 將A+B的值賦給C |
| += | 加等賦值運(yùn)算符,將右邊運(yùn)算符與左邊運(yùn)算符相加并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) | C += A 相當(dāng)于 C = C + A |
| -= | 減等賦值運(yùn)算符,將左邊運(yùn)算數(shù)減去右邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) | C -= A 相當(dāng)于C = C - A |
| *= | 乘等賦值運(yùn)算符,將右邊運(yùn)算數(shù)乘以左邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) | C *= A 相當(dāng)于C = C * A |
| /= | 除等賦值運(yùn)算符, 將左邊運(yùn)算數(shù)除以右邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦值給左邊運(yùn)算數(shù) | C /= A 相當(dāng)于 C = C / A |
| %= | 模等賦值運(yùn)算符,用兩個運(yùn)算數(shù)做取模運(yùn)算并將運(yùn)算結(jié)果賦值給左邊運(yùn)算數(shù) | C %= A 相當(dāng)于 C = C % A |
有一種運(yùn)算符叫條件運(yùn)算符。首先判斷一個表達(dá)式是真或假,然后根據(jù)判斷結(jié)果執(zhí)行兩個給定指令中的一個。條件運(yùn)算符語法如下
| 運(yùn)算符 | 描述 | 例子 |
|---|---|---|
| ? : | 條件表達(dá)式 | 如果條件為真 ? X值 : Y值 |
typeof 是一個置于單個參數(shù)之前的一元運(yùn)算符,這個參數(shù)可以是任何類型的。它的值是一個表示運(yùn)算數(shù)的類型的字符串。
typeof 運(yùn)算符可以判斷“數(shù)值”,“字符串”,“布爾”類型,看運(yùn)算數(shù)是一個數(shù)字,字符串還是布爾值,并且根據(jù)判斷結(jié)果返回true或者false。
if語句是基本的控制語句,能使JavaScript做出決定并且按條件執(zhí)行語句。
if (expression){
Statement(s) to be executed if expression is true
}
if...else 語句是另一種控制語句,它能使JavaScript選擇多個代碼塊之一來執(zhí)行。
if (expression){
Statement(s) to be executed if expression is true
}else{
Statement(s) to be executed if expression is false
}
if...else if... 語句是一種推進(jìn)形式的控制語句,它能使 JavaScript 選擇多個代碼塊之一來執(zhí)行。
if (expression 1){
Statement(s) to be executed if expression 1 is true
}else if (expression 2){
Statement(s) to be executed if expression 2 is true
}else if (expression 3){
Statement(s) to be executed if expression 3 is true
}else{
Statement(s) to be executed if no expression is true
}
語句的基本語法是給定一個判斷表達(dá)式以及若干不同語句,根據(jù)表達(dá)式的值來執(zhí)行這些語句。編譯器檢查每個case是否與表達(dá)式的值相匹配。如果沒有與值相匹配的,則執(zhí)行default缺省條件。
switch (expression)
{
case condition 1: statement(s)
break;
case condition 2: statement(s)
break;
...
case condition n: statement(s)
break;
default: statement(s)
}
循環(huán)是 JavaScript 中最基本的循環(huán)模式,下邊將加以介紹。
while(expression){
statement
}
do...while 循環(huán)和 while 循環(huán)非常相似,它們之間的區(qū)別是 while 語句為先判斷條件是否成立在執(zhí)行循環(huán)體,而 do...while 循環(huán)語句則先執(zhí)行一次循環(huán)后,再判斷條件是否成立。也就是說即使判斷條件不成立,do...while 循環(huán)語句中“{}”中的程序段至少要被執(zhí)行一次。
do{
statement
}while(expression);
循環(huán)是一種最簡潔的循環(huán)模式,包括三個重要部分
可以將這三個部分放在同一行,用分號隔開。
for(initialize;test condition;iteration statement)
{
statement;
}
for (variablename in object){
statement
}
在每次迭代中將一個對象的屬性賦值給變量,這個循環(huán)會持續(xù)到這個對象的所有屬性都枚舉完。
Break語句用于提前跳出循環(huán),打破封閉的循環(huán)體。
Continue語句告訴解釋器立即開始下一次迭代的循環(huán)和跳過剩余的代碼塊。
當(dāng)遇到continue語句,程序流將立即循環(huán)檢查表達(dá)式,如果條件保持真那么下個迭代開始,否則控制跳出循環(huán)體。
使用一個函數(shù)之前,我們需要定義該函數(shù)。在 JavaScript 中最常見的定義一個函數(shù)的方式是使用函數(shù)關(guān)鍵字,緊隨其后的是一個獨(dú)特的函數(shù)名,參數(shù)列表(也可能是空的),和一個被花括號包圍的語句塊。這里顯示的基本語法
<script type="text/javascript">
<!--
function functionname(parameter-list)
{
statements
}
//-->
</script>
在腳本中調(diào)用某個函數(shù)之后,你會需要簡單的編寫的函數(shù)的名稱如下
<script type="text/javascript">
<!--
sayHello();
//-->
</script>
異常通常使用 try/catch/finally 結(jié)構(gòu)來進(jìn)行處理。
<script type="text/javascript">
<!--
try {
statementsToTry
} catch ( e ) {
catchStatements
} finally {
finallyStatements
}
//-->
</script>
try部分后面必須緊隨catch后者finally部分(同時或者其一)。當(dāng)在catch部分中發(fā)生異常事件后,異常會被存儲于e變量中,然后catch部分會被執(zhí)行。而finally部分會在try/catch之后必然執(zhí)行。
警告對話框是最常用的,它通常被用來給用戶提示一些警告信息。比如,某個輸入?yún)^(qū)域需要用戶輸入一些文本信息,但是用戶并沒有輸入任何信息,那么為了使用戶輸入有效的信息,你可以利用警告對話框來提示警告信息,如下:
<head>
<script type="text/javascript">
<!--
alert("Warning Message");
//-->
</script>
</head>
確認(rèn)對話框是最常用來獲取用戶對任何選項的贊成的觀點(diǎn)。確認(rèn)對話框會顯示兩個按鈕:Ok 和 Cancel。
你可以像如下的方式使用確認(rèn)對話框:
<head>
<script type="text/javascript">
<!--
var retVal = confirm("Do you want to continue ?");
if( retVal == true ){
alert("User wants to continue!");
return true;
}else{
alert("User does not want to continue!");
return false;
}
//-->
</script>
</head>
你可以使用如下的方式來實(shí)現(xiàn)提示對話框
<head>
<script type="text/javascript">
<!--
var retVal = prompt("Enter your name : ", "your name here");
alert("You have entered : " + retVal );
//-->
</script>
</head>
利用 JavaScript 在客戶端進(jìn)行重定向是非常簡單的。為了重定向你的網(wǎng)站,你僅僅只需要在網(wǎng)頁代碼的頭部中添加一行代碼,如下
<head>
<script type="text/javascript">
<!--
var retVal = prompt("Enter your name : ", "your name here");
alert("You have entered : " + retVal );
//-->
</script>
</head>
JavaScript 中 void 是一個重要的關(guān)鍵字。它可以用作一個一元運(yùn)算符,此時它會出現(xiàn)在一個操作數(shù)之前,這個操作數(shù)可以是任意類型的。
這個操作符指定要計算一個表達(dá)式但是不返回值。它的語法可能是下列之一
<head>
<script type="text/javascript">
<!--
void func()
javascript:void func()
or:
void(func())
javascript:void(func())
//-->
</script>
</head>
JavaScript 能使用 window 對象的打印函數(shù)print來幫你實(shí)現(xiàn)這個功能。
當(dāng)JavaScript的打印方法 window.print() 執(zhí)行后,就會打印當(dāng)前的 web 頁面。
你可以使用 onclick 事件直接調(diào)用這個函數(shù),如下所示
<head>
<script type="text/javascript">
<!--
//-->
</script>
</head>
<body>
<form>
<input type="button" value="Print" onclick="window.print()" />
</form>
</body>
創(chuàng)建 Cookie 最簡單的方式就是給 document.cookie 對象賦值一個字符串值,它的語法如下
document.cookie = "key1=value;key2=value2;expires=date";
讀取 Cookie 就像寫它一樣簡單,因?yàn)?document.cookie 對象的值就是 Cookie 的屬性值。因此你可以利用這個字符串在任何時候?qū)?Cookie 進(jìn)行訪問。
document.cookie 字符串會保存一系列用分號分開的 name = value 鍵值對,這里的 name 就是一個 Cookie 名稱,value 是它的值。