JavaScript是一種能讓你的網(wǎng)頁更加生動活潑的語言,你可以利用JavaScript輕易的做出親切的歡迎訊息、漂亮的數(shù)字鐘、有廣告效果的跑馬燈及簡易的選舉,還可以顯示瀏覽器停留的時間。讓這些特殊效果提高網(wǎng)頁的可觀性,和用戶更好的交互。是web2.0時代不可或缺的客戶端語言。
JavaScript能用來干什么?
1.數(shù)據(jù)的驗證。
2.將動態(tài)的內(nèi)容寫入到網(wǎng)頁當中。
3.可以對事件做出響應(yīng)。
4.可以讀寫html中的內(nèi)容。
5.可以檢測瀏覽器
6.可以創(chuàng)建cookies
7.模擬動畫…
JavaScript語法特點
基于對象 和 事件驅(qū)動 的 松散型的 解釋性 語言
1、javascript面向?qū)ο箝_發(fā)的
2. 事件驅(qū)動
3.松散型 弱類型
var a="asc";var a=123;
4.解釋型語言。
由宿主環(huán)境(瀏覽器)解釋執(zhí)行
JavaScript的組成部分
JavaScript基礎(chǔ)語法
JavaScaript輸出工具輸出工具
A. alert(); 彈窗 會以文本的原格式輸出
B. document.write() 輸出到頁面,會以html的語法解析里面的內(nèi)容
C. prompt(“”,“”) 輸入框JavaScaript放置引用A.B.可以在超鏈接或是重定向的位置調(diào)用javascript代碼格式:"javascript:alert('我是超鏈接')"重定向格式:action="javascript:alert('我是表單')"C.在事件后面進行調(diào)用格式:onclick="alert('我是事件')"
D.調(diào)用外部JavaScript文件格式:放置的時候注意事項
1.JavaScript可以在html頁面當中的任何位置來進行調(diào)用, 但是他們還是一個整體,是相互聯(lián)系,相互影響。
2.在調(diào)用頁面標簽對當中不能有任何代碼在js腳本中不能出現(xiàn)
標簽對。JavaScript注釋
行內(nèi)注釋: // 注釋內(nèi)容
塊注釋:/* 注釋內(nèi)容*/
對付舊的瀏覽器JavaScript變量變量:可以存儲數(shù)據(jù)的一個容器。可以存儲和引用任何的數(shù)據(jù)。變量的創(chuàng)建:一般來 說要以“var”關(guān)鍵來修飾。A.先聲明,后賦值var b;b="www.baidu.com";B.聲明和賦值同時進行var url="www.sxuek.com";
C.一次聲明多個變量,然后再賦值var name, age ,sex;name="lisi";age=14;sex="boy";
D.一次聲明多個變量同時進行賦值。var name="wangwu",age=17,sex="girl";
JavaScript命名規(guī)范
1. 嚴格區(qū)分大小寫
2. 變量的命名必須以字母或 _或 $開頭,余下的部分可以是任意的字母,數(shù)字,或者是 _或者是$
3.不能用關(guān)鍵字或者是保留字命名。
4.javascript自己的命名習慣駝峰命名法:getElementById首字母大寫:Object
5.命名一定要有意義。
6. ;的用法
聲明變量注意的問題
1.覆蓋已有變量
A.如何重新聲明該變量,而沒有賦值,該變量的值不會改變
B.如果重新聲明該變量并且重新賦值,那么舊的變量值會刪除,改為新的變量值。
2.不用var 關(guān)鍵字來修飾變量aa="我是沒有聲明的“alert(aa);
A.如果不用var關(guān)鍵來修飾的變量,并且這個所謂的變量也沒有賦值,那么javascript會 報錯。
B.如果不用var關(guān)鍵來修飾的變量,但是變量賦值了,那么javascript會把他當作一個全 局變量來處理,不會報錯。但是我們不推薦使用。
JavaScript中的數(shù)據(jù)類型
1.初始類型(基本類型)
– Undefined– Null– Number– String– Boolean
2.引用類型– object (class)JavaScript中的數(shù)據(jù)類型
typeof 操作符– 他是用來檢測數(shù)據(jù)類型的一元運算符,并且返回的結(jié)果始終是一個字符串。初始類型-String類型
用單雙引號來說明,他所包圍的值都可以是字符串。
單雙引號的用法:
– 效率是一樣的
– 只能成對出現(xiàn),不能相互交叉使用
– 可以相互嵌套。
– 還包括一些特殊的字符:
– \n 換行
– \t 制表符
– \b 空格
– \r 回車
– \' ‘
– \" “
– \\ \
初始類型-Number類型
Number數(shù)值類型
包括整型和浮點型。支持二進制、八進制、十進制、十六進制。用科學計數(shù)法來表示,還包括一些特殊的值:
Number.MAX_VALUE 最大值
Number.MIN_VALUE 最小值
初始類型- Undefined
Undefined指的就是變量創(chuàng)建后但是沒有賦值,而變量的默認值就是undefined.
初始類型- null
Null
指的是什么都沒有,是一個空對象。相當于一個占位符。
引用類型
object (class)
包含相關(guān)屬性和方法的一個集合。
new 關(guān)鍵字。
var obj=new Object()
var obj={};
JavaScaript運算符
運算符和操作數(shù)的組合就稱為表達式。
?算術(shù)運算符
關(guān)系運算符(比較運算符)
賦值運算符
邏輯運算符
一元運算符
三元運算符
特殊運算符
算數(shù)運算符
+? -? * ? %? var++ ? ++var? var-- ? --var
– “+” 加號(字符串連接號)
? 用于數(shù)值的運算
? 用于字符串的連接
– 任何的數(shù)據(jù)類型和字符串相加都是等于相加以后的字符串
– “%”(取余)
(1)用來取某個數(shù)的余數(shù)
(2)用于取一段范圍的值
(3) 一般不用于小數(shù),因為結(jié)果不確定。
– var++
? 先運行,再自增,比較無私,先人后己
– ++val? 先自增,再運行,比較自私,先己后人
關(guān)系運算符(比較運算符)
<?? > ? <=?? >=?? ==??? ===??? !=?? !==
– 他們運算的結(jié)果都是布爾值。
– == 比較兩個數(shù)的值是否相等
– === 不但比較值是否相等,還比較類型是否相等。
關(guān)系運算符(比較運算符)注意
? 都是數(shù)值的時候,他會正常比較
? 如果兩個都是字符串進行比較,從他們的第一個開始先轉(zhuǎn)換為ASCII碼值開始依次比較,直到比較出大小。
? 當一個字符串,另一個是數(shù)值的時候,把字符串嘗試轉(zhuǎn)換成數(shù)值類型,然后進行比較,如果不能轉(zhuǎn)換成數(shù)值類型 ,返回假
?如果兩個數(shù)值都為字符串 則把第一個值進行轉(zhuǎn)換ASCII碼后比較大小;
? undefined== null為真
? 如果一個數(shù)值和布爾值進行比較,會把布爾值轉(zhuǎn)換為數(shù)值再進行比較,true為1,false為 0
賦值運算符
=?? += ? -=?? *= ? /=?? %=
– +=
?var num=1 ;
num+=3;
num=num+3
邏輯運算符
與 and &&? 或 or || 非not !
– &&
? 運算符兩邊只要有一個是假,那么他的運算結(jié)果就是假,只有兩個都為真的時候,運算結(jié)果才是真的。
– ||
? 算符兩邊只要有一個是真的那么他就是真的,只有當兩個都是假的時候,他才是假的。
– !
? 取反,假的變成真的,真的變成假的。邏輯運算符注意
? 邏輯運算符可以對任何類型的數(shù)據(jù)進行運算但是在運算的時候,可以轉(zhuǎn)換為對應(yīng)的布爾值 Boolean? Undefine false
? Null false
? Boolean 就是本身的值
? Number 除了0以外都是真的
? String 除了空字符串以外都是真的
? 對象 真的一元運算符
typeof + - delete new ++ --
– +
? 正號、正數(shù)
– delete
? 刪除對象的方法或是屬性
– new
? 用來創(chuàng)建一個對象
三元運算符
根據(jù)表達式的計算結(jié)果有條件的為變量賦值
格式:
var 變量= Boolean expression?條件為真的值:條件為假的值
特殊運算符
“,” ? ? “()”
– “,”
? 用來一次聲明多個變量– “()”
? 在運算的時候有優(yōu)先級的作用
? 可以讓函數(shù)運行
JavaScript流程控制
流程:就是程序代碼的執(zhí)行順序。
流程控制:通過規(guī)定的語句讓程序代碼有條件的按照一定的方式執(zhí)行
順序結(jié)構(gòu)
–按照書寫順序來執(zhí)行,是程序中最基本的流程結(jié)構(gòu)。
選擇結(jié)構(gòu)(分支結(jié)構(gòu)、條件結(jié)構(gòu))
–根據(jù)給定的條件有選擇的執(zhí)行相應(yīng)的語句
循環(huán)結(jié)構(gòu)
–在給定的條件滿足的情況下,反復(fù)的執(zhí)行同一段代碼。
選擇結(jié)構(gòu)(分支結(jié)構(gòu)、條件結(jié)構(gòu))
1.單路分支
//條件可以是表達式也可以是任何的數(shù)據(jù)類型
//大括號會把他里面的代碼當作一個整體來運行,如果只有一條語句,可以省略大括號
if(條件){
條件成立執(zhí)行的語句
}
2.雙路分支
if(條件){
條件成立的時候執(zhí)行的代碼
}else{
條件不成立的時候執(zhí)行的代碼
}
選擇結(jié)構(gòu)(分支結(jié)構(gòu)、條件結(jié)構(gòu))
3.多路分支
if(條件1){
條件1成立執(zhí)行的代碼
}else if(條件2){
條件2成立執(zhí)行的代碼
}else if(條件3){
條件3成立執(zhí)行的代碼
}.....
.else{
如果上述條件都不成立執(zhí)行的代碼
}
選擇結(jié)構(gòu)(分支結(jié)構(gòu)、條件結(jié)構(gòu))
4.嵌套分支
if(條件1){
if(){
}else if(){
}....
}else if(條件2){
條件2成立執(zhí)行的代碼
}else if(條件3){
條件3成立執(zhí)行的代碼
}......
else{
如果上述條件都不成立執(zhí)行的代碼
}
選擇結(jié)構(gòu)(分支結(jié)構(gòu)、條件結(jié)構(gòu))
switch語句
switch(變量任何的數(shù)據(jù)類型){
case 值1:
表達式1;
break;
case 值2:
表達式3;
break;
.........default:
表達式;
}
分支結(jié)構(gòu)注意事項
1.當判斷某種范圍的時候最好用if語句,當判斷單個值時候用switch
2.條件滿足的情況不可以重復(fù),會發(fā)生不可預(yù)期的錯誤。
循環(huán)結(jié)構(gòu)
循環(huán):在給定的條件滿足的情況下,重復(fù)的執(zhí)行同一段代碼。
1.for循環(huán)
for(變量=初始值;變量<=結(jié)束值;變化值){
循環(huán)體;
}
如:
for(var i=0;i<5;i++){
alert(i); //循環(huán)到第幾次
}
循環(huán)結(jié)構(gòu)
2.while循環(huán)
當條件滿足的時候,執(zhí)行循環(huán)體,當不滿足的時候退出循環(huán)
while(表達式){
循環(huán)體;
}
先最少執(zhí)行一次,再進行條件的判斷,如果條件滿足繼續(xù)執(zhí)行,如果不滿足則退出循環(huán)。
do{
}while(表達式)
循環(huán)結(jié)構(gòu)注意問題
1.do{}while 和while的區(qū)別
while:當條件滿足的時候,執(zhí)行循環(huán)體,當不滿足的時候退出循環(huán),先判斷后執(zhí)行。
do{}while:先最少執(zhí)行一次,再進行條件的判斷,如果條件滿足繼續(xù)執(zhí)行,如果不滿足則退出循環(huán)。
2.for 和while的區(qū)別
for一般是用于循環(huán)指定的次數(shù)
while是根據(jù)條件的真假來循環(huán),當真的時候進行循環(huán),假的時候退出循環(huán)。
循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語句
在循環(huán)控制語句中,當 滿足指定條件 的時候,退出循環(huán) 或者是退出 當前 循環(huán)的語句。
1.break;
語法:break;
跳出并且終止循環(huán),如果后面有代碼,則繼續(xù)往下執(zhí)行。
2.continue;
格式:continue;
跳出并且終止當前的循環(huán),如果下個值仍滿足循環(huán)條件,則繼續(xù)循環(huán)。
循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語句
跳出多層循環(huán)
語法:
標簽名:語句;
注意:標簽名只可以作用于break 或continue
JavaScript函數(shù)
函數(shù):將完成某一特定功能的代碼集合起來,可以重復(fù)使用的代碼塊。
優(yōu)點:
– 使程序更加簡潔
– 邏輯性更調(diào)理
– 調(diào)用更方便
– 維護更加容易
函數(shù)的聲明方式(創(chuàng)建)
A.基本語法
function 關(guān)鍵字
function 函數(shù)名([參數(shù)1],[參數(shù)2]....){
函數(shù)體
[retrun] //返回值
}
B.字面量定義的形式(匿名函數(shù))
var 變量=function ([參數(shù)1],[參數(shù)2]....){
函數(shù)體
[retrun] //返回值
}
C.以對象的形式來聲明
new 關(guān)鍵字。
var 變量=new Function([參數(shù)1],[參數(shù)2]...,"函數(shù)體");
函數(shù)的調(diào)用方式
通過括號來調(diào)用
– 函數(shù)名()
– 變量名()
通過觸發(fā)事件來調(diào)用
– 對象.事件=function (){}
自調(diào)用
– (function (){})()
創(chuàng)建\調(diào)用函數(shù)注意問題
如果兩個函數(shù)的命名相同,后面的將會覆蓋前面的函數(shù)。
以基本語法聲明的函數(shù),會在頁面載入的時候提前解析到內(nèi)存中,以便調(diào)用。所以可以在函數(shù)的前面調(diào)用。但是以字面量形式命名的函數(shù),會在執(zhí)行到他的時候,才進行賦值。所以只能在函數(shù)的后面調(diào)用
在不同的<script></scricp>塊中,因為瀏覽器解析的時候是分塊解析的,所以前面的塊不能調(diào)用后面塊的函數(shù),所以在不同的塊之間調(diào)用函數(shù)的時候,應(yīng)該先定義后調(diào)用。
帶有參數(shù)的函數(shù)
參數(shù)的作用:
可以動態(tài)的改變函數(shù)體內(nèi)對應(yīng)的變量的值,使同一函數(shù)體得到不同的結(jié)果。
形參:在定義函數(shù)的時候,函數(shù)括號中定義的變量叫做形參。用來接受實參的。
實參:調(diào)用函數(shù)的時候,在括號中傳入的變量或值叫做實參。用于傳遞給形參.
參數(shù)詳解
參數(shù)的類型
– 可以是任何的數(shù)據(jù)類型。
參數(shù)的個數(shù)
– 實參和形參數(shù)量相等,一一對應(yīng)。
– 實參小于形參,不會報錯,多出形參的值會自動賦值為undefined
– 實參大于形參,不會報錯,但如果要獲得多出實參的值,需要用arguments對象來獲取
arguments對象詳解
每創(chuàng)建一個函數(shù),該函數(shù)就會隱式創(chuàng)建一個arguments對象,他包含有實際傳入?yún)?shù)的信息。
arguments對象的屬性
– length 獲得實參的個數(shù)
– callee 獲得函數(shù)本身的引用
– 訪問傳入?yún)?shù)的具體的值。arguments[下標]
模擬函數(shù)重載函數(shù)重載
– 同一個函數(shù)因為參數(shù)的類型或數(shù)量不同,可以對應(yīng)多個函數(shù)的實現(xiàn),每種實現(xiàn)對應(yīng)一個函數(shù)體。
函數(shù)的返回值
return 語句
– 通過return 語句給函數(shù)一個返回值,停止并且跳出當前的函數(shù)
return語句的用法
– 在return 語句后面的函數(shù)體內(nèi)所有內(nèi)容都不會輸出。
– 在函數(shù)體內(nèi)可以有多個return語句,但是只會執(zhí)行一個。(判斷語句)
return語句的返回值
– 返回值可以是任何的數(shù)據(jù)類型
– 只能返回一個返回值。
– 如果函數(shù)沒有返回值,那么這個函數(shù)的值就會自動的賦值為undefined
變量的作用域
作用域:指的就是一段代碼的作用范圍。
全局變量在頁面中任何地方都能夠訪問得到的變量,擁有全局的作用域。
A.函數(shù)的最外層定義的變量。
B.沒有定義直接賦值的變量,擁有全局屬性
局部變量
只能在固定的代碼片段(函數(shù)片段中)中訪問到。
A.函數(shù)內(nèi)部定義的變量,就是局部變量。
B.參數(shù)也是局部變量。
*可以提高程序的邏輯性和安全性,減少名字的沖突。
作用域鏈
我們可以把所有作用域看成是有一個鏈條鏈接起來的,這樣能使變量和函數(shù)能夠有序有機的進行運行。
JavaScript代碼運行環(huán)境
1.宿主環(huán)境
2.執(zhí)行環(huán)境
執(zhí)行的環(huán)境決定了變量和函數(shù)的作用域
A.全局環(huán)境
B.函數(shù)環(huán)境
JavaScript預(yù)解析順序
一、<script></script>塊依次解析。
二、解析代碼運行的環(huán)境。
三、對標識符(關(guān)鍵字)(var function )進行解析,解析到相應(yīng)的環(huán)境下。
四、如果還有塊再按照上面的步驟依次解析。
JavaScript回調(diào)函數(shù)
通過函數(shù)的指針來調(diào)用函數(shù)。
– 把一個函數(shù)的指針做為另一個函數(shù)的參數(shù),當調(diào)用這個參數(shù)的時候,這個函數(shù)就叫做回調(diào)函數(shù)。
JavaScript遞歸函數(shù)
在函數(shù)內(nèi)部直接或間接的調(diào)用自己。
JavaScript內(nèi)嵌函數(shù)
在函數(shù)內(nèi)部再嵌套函數(shù)(閉包)