JavaScript(行為層)
1钩骇、JavaScript介紹
JavaScript是一種輕量級(jí)的腳本語(yǔ)言,是一種用于客戶(hù)端web開(kāi)發(fā)的腳本語(yǔ)言郑象。
2贡这、JavaScript創(chuàng)建方式
JavaScript代碼塊可以嵌在任何地方,但一般放在<head>中厂榛。
(1)內(nèi)嵌式
(2)外鏈?zhǔn)?/p>
(3)事件定義??(JS區(qū)分大小寫(xiě))
嵌入在html標(biāo)簽的屬性中盖矫,onclick點(diǎn)擊事件
作為標(biāo)簽的屬性出現(xiàn)丽惭,屬性值就是JS代碼。
3辈双、JavaScript輸出方式
(1)alert?(window.alert)??警告??不識(shí)別標(biāo)簽
(2)document.write(123);??可以識(shí)別標(biāo)簽责掏,內(nèi)容寫(xiě)到了body里。
document也是window對(duì)象的屬性湃望,本身也是一個(gè)對(duì)象拷橘。
方法:方法名()
(3)console.log()???控制臺(tái)日志,工作中調(diào)試常用喜爷。
alert()函數(shù)會(huì)阻斷JavaScript程序的執(zhí)行。
(4)console.error()???報(bào)錯(cuò)
(5)console.warn()???警告
(6)console.info()??信息級(jí)別
4萄唇、onclick?,當(dāng)鼠標(biāo)點(diǎn)擊一下時(shí)執(zhí)行一次
onmouseover?,當(dāng)鼠標(biāo)放上去時(shí)執(zhí)行一次
onmouseout?,當(dāng)鼠標(biāo)移出去時(shí)執(zhí)行一次
onmousedown?,當(dāng)鼠標(biāo)按下時(shí)執(zhí)行一次
onmouseup?,當(dāng)鼠標(biāo)在上面松開(kāi)(彈起)時(shí)執(zhí)行一次
ondblclick?,當(dāng)鼠標(biāo)雙擊時(shí)執(zhí)行一次
onload?,當(dāng)對(duì)象加載完成時(shí)執(zhí)行一次
5檩帐、JS中常用對(duì)話(huà)框
(1)警示對(duì)話(huà)框alert()???window.alert()??無(wú)返回值
(2)確認(rèn)對(duì)話(huà)框confirm()??window.confirm()??有返回值,返回值是布爾型
(3)提示輸入對(duì)話(huà)框prompt()??window.prompt()??有返回值另萤,返回值是輸入框中的值(字符串)湃密,點(diǎn)擊取消返回是null。
6四敞、JS數(shù)據(jù)類(lèi)型
基本數(shù)據(jù)類(lèi)型
(1)字符串?string
(2)數(shù)字??number
(3)布爾??boolean
(4)null?一個(gè)“空”的字泛源,可用來(lái)清空變量,表示對(duì)象為空忿危。
(5)undefined??表示變量不含有值
復(fù)合數(shù)據(jù)類(lèi)型
數(shù)組??對(duì)象
7达箍、變量命名規(guī)則
(1)必須以字母、下劃線(xiàn)或$開(kāi)頭铺厨。
(2)變量名區(qū)分大小寫(xiě)缎玫。
(3)不允許使用關(guān)鍵字和保留字做變量名。
如:break解滓,default赃磨,else,void,int,double,public等等。
8洼裤、變量的聲明
語(yǔ)法:var?變量名邻辉;
9、算數(shù)運(yùn)算符??+-*/%
b=a++;先賦值再自增
b=++a腮鞍;先自增再賦值
JS是弱數(shù)據(jù)類(lèi)型的語(yǔ)言值骇,如果數(shù)字與字符串相加,數(shù)字就會(huì)被同化為字符串移国;如果數(shù)字與字符串相減雷客,乘,除桥狡,取余搅裙,字符串會(huì)被同化為數(shù)字皱卓,轉(zhuǎn)化數(shù)字成功(字符串為由數(shù)字組成的字符串)直接做運(yùn)算,失敗顯示NAN(not?a?number)部逮。
10娜汁、檢測(cè)數(shù)據(jù)類(lèi)型
alert(typeof(sum));或者alert(typeof?sum);
11、比較操作符
==?值相等??===恒相等??值相等兄朋,類(lèi)型也一樣
!=不等???!==不恒等
12掐禁、邏輯運(yùn)算符
&&?||??!
運(yùn)算符的優(yōu)先級(jí)
颅和!?>?算術(shù)運(yùn)算符(+-*/%)>?關(guān)系運(yùn)算符(>=?<=?==?===?!=)>?&&?>?||(邏輯運(yùn)算符)>?賦值運(yùn)算符(=)
特殊例子:
0.1+0.2==?0.3??false
0.1+0.2=0.3000...4
13傅事、a.tostring()?轉(zhuǎn)化為字符串
a.tostring(2)??轉(zhuǎn)化為對(duì)應(yīng)的進(jìn)制??該例子為轉(zhuǎn)化為二進(jìn)制
14、類(lèi)型轉(zhuǎn)換
(1)var?bool?=?true;
alert(bool*1);//輸出1?,布爾值true轉(zhuǎn)換成數(shù)字為1,事實(shí)上將其它值轉(zhuǎn)換在數(shù)字最簡(jiǎn)單的方法就是將其乘以1
另一種方法:
轉(zhuǎn)化為整型:var?num?=parseInt(prompt(“請(qǐng)輸入一個(gè)數(shù)”))峡扩;
轉(zhuǎn)化為浮點(diǎn)型:var?num?=parseFloat(prompt(“請(qǐng)輸入一個(gè)數(shù)”))蹭越;
(2)bool?=?false;
alert(bool*1);//輸出0
alert(bool+"");//輸出"flase",將其它類(lèi)型轉(zhuǎn)換成字符串的最簡(jiǎn)單的方法就是將其寫(xiě)一個(gè)空字符串相連
(3)var?str?=?"some?string";
str?="";
alert(!!str);//輸出false,只有空字符串轉(zhuǎn)換成布爾值時(shí)會(huì)是false,非空字符串轉(zhuǎn)換成布爾值都會(huì)返回true
(4)var?num?=0;
alert(!!num);//false
num=-123.345;
alert(!!num);//true,除0以外的任何數(shù)字轉(zhuǎn)換成布爾值都會(huì)是true
//還有一個(gè)非常重要的是,空字符串轉(zhuǎn)換成數(shù)字將會(huì)是0
alert(""*1);//輸出0
15、分支與循環(huán)
<1>Javascript中的程序結(jié)構(gòu)分為:
1.順序結(jié)構(gòu):沒(méi)有任何結(jié)構(gòu)就是順序教届,所有語(yǔ)句從上到下响鹃,逐條執(zhí)行
順序結(jié)構(gòu)主要包括注釋語(yǔ)句、賦值語(yǔ)句案训、輸入輸出等語(yǔ)句
2.分支結(jié)構(gòu)
(1)單分支{}語(yǔ)句體
要么做买置,要么不做;如果if(條件)條件為true强霎,那么執(zhí)行if(){}所有語(yǔ)句忿项,否則直接跳過(guò)if結(jié)構(gòu)
(2)雙分支或多分支
if…else??????if…elseif…else?if…elseswitch
3.循環(huán)結(jié)構(gòu)
for循環(huán)
while循環(huán)
do…while循環(huán)
for…in循環(huán)
<2>switch和多重if的異同
相同點(diǎn):都可以實(shí)現(xiàn)多分支結(jié)構(gòu)
不同點(diǎn):
Switch:只能處理等值的條件判斷,且條件是整型變量或字符變量的等值判斷
多重if:處理在else部分還包含其它if結(jié)構(gòu)城舞,特別適合某個(gè)變量處于某個(gè)區(qū)間時(shí)的情況
<3>循環(huán)
while循環(huán):先判斷后執(zhí)行??至少執(zhí)行0次
do-while循環(huán):先執(zhí)行后判斷??至少執(zhí)行1次
for循環(huán):先判斷后執(zhí)行
for(參數(shù)初始化;條件判斷;更新循環(huán)變量){
循環(huán)體
}
執(zhí)行順序:<1>參數(shù)初始化<2>條件判斷<3>循環(huán)體<4>更新循環(huán)變量
<4>跳轉(zhuǎn)語(yǔ)句
1.break
可跳出循環(huán)執(zhí)行循環(huán)外面的語(yǔ)句
2.continue
跳出本次循環(huán)??continue后面的語(yǔ)句不執(zhí)行倦卖,執(zhí)行下一次循環(huán)。
16椿争、函數(shù)
(1)函數(shù)特點(diǎn):封裝代碼怕膛,代碼的重用性強(qiáng)。
(2)函數(shù)是為完成某一功能的程序指令(語(yǔ)句)的集合秦踪,是執(zhí)行特定任務(wù)的語(yǔ)句塊褐捻。
(3)分類(lèi):自定義函數(shù),系統(tǒng)函數(shù)(內(nèi)置函數(shù)椅邓,包括預(yù)定義函數(shù))柠逞。
(4)全局函數(shù)包括:
1.eval()將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字,可進(jìn)行直接執(zhí)行js代碼;
2.isNaN()用來(lái)計(jì)算一個(gè)參數(shù)以確定它是否為非數(shù)字;
不是數(shù)字返回true景馁,是數(shù)字返回false板壮。
3.parseInt()/parseFloat()將數(shù)字字符串強(qiáng)制轉(zhuǎn)化為一個(gè)數(shù)值;
4.isFinite()用來(lái)確定參數(shù)是否是一個(gè)有限數(shù)值.也就是說(shuō),如果該參數(shù)為非數(shù)字NaN,正無(wú)窮數(shù),或負(fù)無(wú)窮數(shù),則返回false,否則返回true;如果是字符串類(lèi)型的數(shù)字,將會(huì)自動(dòng)關(guān)轉(zhuǎn)化為數(shù)字型;
5.escape函數(shù)/unescape()將字符串進(jìn)行編碼和解碼?,這樣就可以在所有的計(jì)算機(jī)上讀取該字符串合住。
(5)函數(shù)定義
function?函數(shù)名(){
函數(shù)體;
}
函數(shù)名必須是唯一的绰精!
(6)函數(shù)調(diào)用
1.函數(shù)名()在JS里寫(xiě)撒璧。
2.onclick=”函數(shù)名()”通過(guò)事件來(lái)觸發(fā)調(diào)用函數(shù)
注意:如果局部變量不是先聲明再賦值,就會(huì)默認(rèn)為局部變量笨使。
eg:var?j?=?5;?與??j?=?5;的區(qū)別卿樱。
(7)作用域
1.全局作用域???2.局部作用域(函數(shù)作用域)
(8)DOM
(Document?Object?Model)文檔對(duì)象模型
獲取元素對(duì)象的方法:
document.getElementById(“id值”);
獲取非form表單標(biāo)簽的內(nèi)容:
元素對(duì)象.innerHTML;????(能識(shí)別標(biāo)簽)
設(shè)置非form表單標(biāo)簽的內(nèi)容:
元素對(duì)象.innerHTML=內(nèi)容;
獲取form表單里的值:
元素對(duì)象.value;???????(不能識(shí)別標(biāo)簽)
設(shè)置form表單里的值:
元素對(duì)象.value=值;
17硫椰、變量前置
所有變量會(huì)先設(shè)置為undefined繁调,如果賦值才有值。
eg:var?a=5,b=6;
if(a>b){var?c?=7;}???輸出c是undefined