JavaScript概述

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ù)(閉包)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內(nèi)容