JavaScript概述
- JavaScript 是世界上最流行的編程語(yǔ)言,可廣泛用于服務(wù)器、PC、筆記本電腦、平板電腦和智能手機(jī)等設(shè)備。
- JavaScript 是腳本語(yǔ)言,是一種輕量級(jí)的編程語(yǔ)言。可以簡(jiǎn)單的將我們以前學(xué)過(guò)的HTML元素比作演員,而腳本語(yǔ)言就是劇本,你就是導(dǎo)演!
- 之前我們通過(guò)學(xué)習(xí)的HTML+CSS可以完成靜態(tài)的網(wǎng)頁(yè)(當(dāng)然也可以加一下簡(jiǎn)單的動(dòng)畫(huà)),通過(guò)JavaScript的學(xué)習(xí)我們可以增加網(wǎng)頁(yè)的交互功能等完成復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)。
- 當(dāng)然JavaScript還有許多其他的用處,隨著學(xué)習(xí)的深入我們逐步來(lái)介紹。
- JavaScript 與 Java 是兩種完全不同的語(yǔ)言,無(wú)論在概念還是設(shè)計(jì)上。
嵌入JavaScript代碼的三種方式
- 寫(xiě)在 script 標(biāo)簽中
- 直接放在HTML標(biāo)簽中
- 以外部文檔的方式連接到當(dāng)前HTML文檔中。
注意事項(xiàng):
- 字母的大小寫(xiě),Name和name是兩個(gè)不同的標(biāo)識(shí)符。
- 空格和換行。這一點(diǎn)和CSS代碼規(guī)則類似:多余的空格會(huì)被忽略,可以將一行代碼分成多行寫(xiě)。
- 分號(hào)作為一個(gè)語(yǔ)句的結(jié)束標(biāo)志,分號(hào)之后是新語(yǔ)句的開(kāi)始。雖然省略不寫(xiě)通常也是沒(méi)有問(wèn)題的,但還是建議大家寫(xiě)上。
- 代碼的注釋:?jiǎn)涡凶⑨尯投嘈凶⑨尅?/li>
document.write() 的常用操作
- 除了直接輸出文字外,它還支持帶有HTML標(biāo)簽的輸出內(nèi)容。
- 比如直接輸出一個(gè)標(biāo)題
- 比如在輸出內(nèi)容中加入br換行標(biāo)簽
- 比如直接輸出列表項(xiàng)......
document.write('<h3>標(biāo)簽標(biāo)<br>題<h3><hr><li><li>');
alert()方法
- alert()方法會(huì)輸出一個(gè)對(duì)話框,在以后的課程中我們會(huì)經(jīng)常用它進(jìn)行測(cè)試,務(wù)必先了解它的用法。
- 可以添加多個(gè)alert();他們會(huì)按照順序依次執(zhí)行。
alert('提示');
onclick事件的基本用法
- onclick()事件是最常用的事件之一,所謂事件可以簡(jiǎn)單理解為用戶的操作。
<input type="button" name="name" value="彈框" onclick="alert('哎呦不錯(cuò)哦')">
常量
- 常量是從始至終不能被改變的數(shù)據(jù)。比如: 數(shù)字 123 可以是常量,字符串 "hello" 也是一個(gè)常量......
- 常量通常用來(lái)表示固定不變的量,比如圓周率,萬(wàn)有引力常量。
變量
- 變量的值是可以改變的,變量可以看做是存儲(chǔ)數(shù)據(jù)的容器。比如一個(gè)瓶子,它既可以裝入醬油、醋;也可以裝入茅臺(tái)和二鍋頭......
- 在 JavaScript 中創(chuàng)建變量通常稱為“聲明”變量,使用關(guān)鍵字 var來(lái)聲明變量。
- 向變量賦值,使用等號(hào);可以在聲明變量時(shí)對(duì)其賦值,也可以先聲明后賦值。
- 可以在一條語(yǔ)句中聲明很多變量。該語(yǔ)句以 var 開(kāi)頭,并使用逗號(hào)分隔變量即可
數(shù)據(jù)類型
可以使用typeof(變量名)查詢數(shù)據(jù)類型
- 數(shù)據(jù)類型包括:字符串、數(shù)字、布爾、數(shù)組、對(duì)象、Null、Undefined
- 數(shù)字 number: JavaScript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點(diǎn),也可以不帶:
- 字符串 string:字符串 是存儲(chǔ)字符的變量。
- 布爾 boolen:只能有兩個(gè)值:true 或 false。
- 數(shù)組 array:
- null 空值:可以通過(guò)將變量的值設(shè)置為 null 來(lái)清空變量。
- object: 對(duì)象由花括號(hào)分隔。在括號(hào)內(nèi)部,對(duì)象的屬性以名稱和值對(duì)的形式 (name : value) 來(lái)定義。屬性由逗號(hào)分隔。
- Undefined 這個(gè)值表示變量不含有值或未聲明。
溫馨提示:注意事項(xiàng)
- 在一個(gè)HTML文檔使用script標(biāo)簽嵌入多個(gè)JS語(yǔ)句的時(shí)候,這幾個(gè)語(yǔ)句之間是相通的,或者說(shuō)是有關(guān)聯(lián)的。
- 命名規(guī)范(包括函數(shù)名,變量等):
- 必須以字母、下劃線或者美元符號(hào)開(kāi)始,不能使用特殊符號(hào)。
- 命名不能是系統(tǒng)的關(guān)鍵字:比如new ,if,class......
- 區(qū)分大小寫(xiě)
- 命名最好用有意義的名稱。比如說(shuō)name,people......
數(shù)據(jù)類型包括:字符串、數(shù)字、布爾、數(shù)組、對(duì)象、Null、Undefined
關(guān)于數(shù)據(jù)類型的分類,不同書(shū)籍的分類方法有所不同,有的劃分為復(fù)雜數(shù)據(jù)類型和簡(jiǎn)單數(shù)據(jù)類型,也有的劃分為原始數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型;
有的書(shū)籍將函數(shù)作為一種特殊的數(shù)據(jù)類型,有的認(rèn)為函數(shù)不算是數(shù)據(jù)類型;
typeof運(yùn)算符
- typeof運(yùn)算符可以查詢數(shù)據(jù)類型
- 其返回可能值有:undefined,boolean,number,string、object以及function.
alert(typeof(n));
數(shù)據(jù)類型
-
字符串型數(shù)據(jù)String:字符串是存儲(chǔ)字符的變量。
- 常量字符串:如 "JavaScript",'HTML5'
- 變量字符串:如:var text="HTML5視頻教程"
- 可以使用"+"進(jìn)行字符串的連接。
- 在 JavaScript 中,字符串使用單引號(hào)或者雙引號(hào)來(lái)起始或者結(jié)束。那么如何輸出單引號(hào)或者雙引號(hào)呢?就要用到轉(zhuǎn)義字符
- JavaScript中常用的轉(zhuǎn)義字符
- 換行符:\n
- 回車符:\r
- 退格符: \b
- 反斜杠: \
- 雙引號(hào): "......
document.write(n+'\n'+'s')
溫馨提示:部分轉(zhuǎn)義字符在輸出為HTML文檔流時(shí)不發(fā)生作用。
-
數(shù)值型數(shù)據(jù)Number:
- JavaScript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點(diǎn),也可以不帶。
- 浮點(diǎn)數(shù)值的最高精度是17位小數(shù),但是在進(jìn)行算術(shù)計(jì)算時(shí)其精度遠(yuǎn)遠(yuǎn)不如整數(shù)。例如,0.1加0.2的結(jié)果不是0.3, 而是0.30000000000000004。這個(gè)舍入誤差會(huì)導(dǎo)致無(wú)法測(cè)試特定的浮點(diǎn)數(shù)值。
- 極大或極小的數(shù)字可以通過(guò)科學(xué)(指數(shù))計(jì)數(shù)法來(lái)書(shū)寫(xiě):3e4
en為*10的n次方 - 數(shù)值可以通過(guò)運(yùn)算符進(jìn)行計(jì)算
- 數(shù)字可以寫(xiě)成十進(jìn)制、八進(jìn)制、十六進(jìn)制。
- 八進(jìn)制在js中表示是第一位一定要是0,后面就是八進(jìn)制字?jǐn)?shù)序列(0~7)
- 十六進(jìn)制字面量前兩位必須是0x,后面跟十六進(jìn)制數(shù)字(09及AF)。字母A~F不區(qū)分大小寫(xiě)。
- 溫馨提示:科學(xué)(指數(shù))計(jì)數(shù)法、八進(jìn)制、十六進(jìn)制表示的數(shù)字在輸出時(shí)統(tǒng)統(tǒng)會(huì)轉(zhuǎn)換成十進(jìn)制。
-
布爾型數(shù)據(jù)Boolen:
- 布爾型數(shù)據(jù)boolen:只能有兩個(gè)值:true 或 false。
- 將各種類型的值轉(zhuǎn)化成Boolean類型的規(guī)則如下:
- Number:任意非0的數(shù)值為true,0值和NaN為"false"。
- String:所有的非空字符串轉(zhuǎn)化為 true;""(空字符串)轉(zhuǎn)化成false
- Object的任何對(duì)象都會(huì)轉(zhuǎn)化為 true;
- 在javascript中,只要邏輯表達(dá)式不返回undefined不返回null,就都是真的。
-
Undefined
- 這是一個(gè)很有意思的數(shù)據(jù)類型,因?yàn)樗闹抵挥幸粋€(gè),那就是undefined。
- 在申明變量時(shí)如果沒(méi)有將變量賦值的話這個(gè)變量也是屬于Undefined類型的。。
- 如果一個(gè)變量沒(méi)有申明就直接去訪問(wèn)解釋器會(huì)報(bào)錯(cuò)誤信息,但是這樣的變量如果使用typeof返回的結(jié)果也是"undefined"。。
-
Null:空值
- Null也是一個(gè)只有一個(gè)值得數(shù)據(jù)類型,它的值就是null,任何變量只要給其賦值為null的話這個(gè)變量的數(shù)據(jù)類型就是Null類型。
- 可以通過(guò)將變量的值設(shè)置為 null 來(lái)清空變量。
-
對(duì)象Object:
- 在javascript中,所有的對(duì)象都繼承自O(shè)bject對(duì)象。
-
數(shù)組Array:
- 可以通過(guò)"."來(lái)訪問(wèn)數(shù)組的元素。
- 數(shù)組元素的順序從0開(kāi)始
var array1=['a','b','c']; var array2=new Array('a','b','c'); var array3=new Array(); array3[0]='a'; array3[1]='b'; array3[2]='c'; -
對(duì)象Object:
- 在javascript中,所有的對(duì)象都繼承自O(shè)bject對(duì)象。
- 對(duì)象由花括號(hào)分隔。在括號(hào)內(nèi)部,對(duì)象的屬性以名稱和值對(duì)的形式 (name : value) 來(lái)定義。
- 對(duì)象沒(méi)有賦值的屬性,該屬性的值為undefined。
var person={name:'木木'}; alert(person.name);
運(yùn)算符
-
基本概念
- 表達(dá)式:由常量/變量和運(yùn)算符組成的短語(yǔ);
- 操作數(shù):表達(dá)式中的常量和變量成為操作數(shù);
- 運(yùn)算符:表達(dá)式中起運(yùn)算作用的符合成為運(yùn)算符;
- 單目運(yùn)算符:只能帶一個(gè)操作數(shù)的成為單目運(yùn)算符;(也叫一元運(yùn)算符)
- 多目運(yùn)算符:帶多個(gè)操作數(shù)的成為多目運(yùn)算符;
-
用于字符串的 + 運(yùn)算符
- +運(yùn)算符用于把文本值或字符串變量加起來(lái)(連接起來(lái))。
- 要想在兩個(gè)字符串之間增加空格,需要把空格插入一個(gè)字符串之中:
- 如果把數(shù)字與字符串相加,結(jié)果將成為字符串。
-
賦值運(yùn)算符:
賦值運(yùn)算符用于給 JavaScript 變量賦值。- =: x=y
- += x+=y 等價(jià)于 x=x+y
- -= x-=y 等價(jià)于 x=x-y
- = x=y 等價(jià)于 x=x*y
- /= x/=y 等價(jià)于 x=x/y
- %= x%=y 等價(jià)于 x=x%y
-
算術(shù)運(yùn)算符
- 加減乘除:+ - * /
- 取模運(yùn)算符:%
- 正負(fù)運(yùn)算符:+ -
- 遞增遞減運(yùn)算符:++ --:使數(shù)字遞增/遞減1(注意前置和后置的區(qū)別)
- 若沒(méi)有賦值前置和后置,同。
- 若有賦值:前置則先計(jì)算遞增/減后賦值,后置則相反。
-
比較運(yùn)算符
比較運(yùn)算符是比較兩個(gè)數(shù)的大小的運(yùn)算符,返回的是一個(gè)布爾值。- 相等運(yùn)算符 == :判斷兩個(gè)操作數(shù)是否相等。不同的數(shù)據(jù)類型會(huì)自動(dòng)轉(zhuǎn)換為相等的數(shù)據(jù)類型再做比較。
- 等同運(yùn)算符=== :全等(值和類型),嚴(yán)格意義的相等,兩個(gè)操作數(shù)的值和他們的類型必須完全一致。
- 不等于:!=
- 不等同運(yùn)算符: !==
- 大于:>
- 小于:<
- 大于或等于:>=
- 小于或等于:<=
若一個(gè)是數(shù)值字符串,一個(gè)是數(shù)值,字符串會(huì)自動(dòng)轉(zhuǎn)換成數(shù)值進(jìn)行比較。若兩個(gè)都是字符串,則比較首個(gè)數(shù)字的大小。字母字符串會(huì)轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼布爾值的false和true會(huì)轉(zhuǎn)換成0和1
-
邏輯運(yùn)算符
- 邏輯運(yùn)算符用于測(cè)定變量或值之間的邏輯。
- && and(與)
- || or(或)
- ! not(非)
-
條件運(yùn)算符
- 根據(jù)條件在兩個(gè)語(yǔ)句中執(zhí)行其中的一個(gè),使用符號(hào) ?:語(yǔ)法如下:
條件表達(dá)式?語(yǔ)句1:語(yǔ)句2 - 參數(shù)說(shuō)明:
- 條件表達(dá)式,結(jié)果會(huì)被作為布爾值處理
- 語(yǔ)句1:如果條件表達(dá)式返回true則執(zhí)行
- 語(yǔ)句2:如果條件表達(dá)式返回false則執(zhí)行
- 根據(jù)條件在兩個(gè)語(yǔ)句中執(zhí)行其中的一個(gè),使用符號(hào) ?:語(yǔ)法如下:
-
運(yùn)算符優(yōu)先級(jí)
運(yùn)算符優(yōu)先級(jí)描述了在計(jì)算表達(dá)式時(shí)執(zhí)行運(yùn)算的順序。先執(zhí)行具有較高優(yōu)先級(jí)的運(yùn)算,然后執(zhí)行較低優(yōu)先級(jí)的運(yùn)算。例如,先執(zhí)行相乘,再執(zhí)行相加。- 運(yùn)算符比較多,可以合理使用()來(lái)改變表達(dá)式的優(yōu)先級(jí)。
- ()的用法和數(shù)學(xué)中的()用法相同,()內(nèi)的會(huì)優(yōu)先計(jì)算。
控制語(yǔ)句
-
if選擇語(yǔ)句
條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。- if() 語(yǔ)句 - 只有當(dāng)指定條件為 true 時(shí),使用該語(yǔ)句來(lái)執(zhí)行代碼
- if()...else 語(yǔ)句 - 當(dāng)條件為 true 時(shí)執(zhí)行代碼,當(dāng)條件為 false 時(shí)執(zhí)行其他代碼
- if()...else if()....else 語(yǔ)句 - 使用該語(yǔ)句來(lái)選擇多個(gè)代碼塊之一來(lái)執(zhí)行
- if語(yǔ)句()中的表達(dá)式會(huì)自動(dòng)轉(zhuǎn)換成布爾值。
-
switch多條件選擇語(yǔ)句
使用 switch 語(yǔ)句來(lái)選擇要執(zhí)行的多個(gè)代碼塊之一。- 工作原理:首先設(shè)置表達(dá)式 n(通常是一個(gè)變量)。
- 隨后表達(dá)式的值會(huì)與結(jié)構(gòu)中的每個(gè) case 的值做比較。
- 如果存在匹配,則與該 case 關(guān)聯(lián)的代碼塊會(huì)被執(zhí)行。
- 請(qǐng)使用 break 來(lái)阻止代碼自動(dòng)地向下一個(gè) case 運(yùn)行。
- default 關(guān)鍵詞來(lái)規(guī)定匹配不存在時(shí)做的事情;相當(dāng)于if里的else
switch (expression) { case expression: xxx break; default: } -
for 循環(huán)語(yǔ)句
- 語(yǔ)句 1 在循環(huán)(代碼塊)開(kāi)始前執(zhí)行
- 語(yǔ)句 2 定義運(yùn)行循環(huán)(代碼塊)的條件,如果語(yǔ)句 2 返回 true,則循環(huán)再次開(kāi)始,如果返回 false,則循環(huán)將結(jié)束。
- 語(yǔ)句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行
- 語(yǔ)句 1 是可選的,也就是說(shuō)不使用語(yǔ)句 1 也可以。
- 如果您省略了語(yǔ)句 2,那么必須在循環(huán)內(nèi)提供 break。否則循環(huán)就無(wú)法停下來(lái)。這樣有可能令瀏覽器崩潰。
- 語(yǔ)句 3 也是可選的。
for (語(yǔ)句 1; 語(yǔ)句 2; 語(yǔ)句 3)
{
被執(zhí)行的代碼塊
}
```
-
while循環(huán)
while循環(huán)在執(zhí)行前測(cè)試一個(gè)條件,如果條件成立進(jìn)入循環(huán)。while 循環(huán)的語(yǔ)法: while (條表達(dá)式) { 語(yǔ)句組 } -
do-while循環(huán)
while循環(huán)在執(zhí)行前測(cè)試一個(gè)條件,而do-while循環(huán)先執(zhí)行循環(huán),然后再測(cè)試條件成立與否。while 循環(huán)的語(yǔ)法: do { 語(yǔ)句組 } while (條表達(dá)式)
6. break和continue跳轉(zhuǎn)語(yǔ)句
* break將直接跳出并結(jié)束當(dāng)前循環(huán)結(jié)構(gòu)。
* continue用于跳過(guò)循環(huán)中的一個(gè)迭代。
* continue 語(yǔ)句只能用在循環(huán)中;break只能用在循環(huán)或 switch 中。
7. 其他控制語(yǔ)句
for/in - 循環(huán)遍歷對(duì)象的屬性,with、return語(yǔ)