JavaScript是弱變量類型的語言
變量只需要用var來聲明。Java,C#中變量的聲明,要根據(jù)變量是什么類型的來聲明:
int a;
float a;
double a;
String a;
boolean a;
var a ;
javascript:變量的使用,數(shù)據(jù)類型,if判斷,循環(huán)語句。
變量。
作用:用來存儲(chǔ)一些可以變化的數(shù)據(jù)。
代碼:
1.0變量的聲明:
var 變量的名稱;
var name;
注意命名規(guī)則:
1.0取值范圍:0-9,a-z,A-Z,_,$
2.0區(qū)分大小寫
3.0不能用數(shù)字開頭
4.0不能與關(guān)鍵字和保留字(備胎)沖突。
2.0變量的賦值:
變量的名稱 = 要賦值的數(shù)據(jù);
name = “abc”;
講作:將字符串a(chǎn)bc賦值給name;在變量a中存儲(chǔ)一個(gè)數(shù)據(jù)這個(gè)數(shù)據(jù)的類型是字符串,內(nèi)容是abc.
3.0變量賦值之后可以使用(使用的方式與直接量一樣)。
注意:
變量的取名一定要規(guī)范:變量名稱的取值范圍是:0-9,a-z,A-Z,_,$,并且數(shù)字不能作為變量名稱的開始部分。
變量的名稱是區(qū)分大小寫的:
變量的名稱不能是關(guān)鍵字和保留字(備胎);
javascript代碼雖然是從上到下執(zhí)行的。但是如果js有語法錯(cuò)誤,那么瀏覽器不會(huì)執(zhí)行這里面的js代碼。因?yàn)闉g覽器會(huì)先去檢查js代碼是否有錯(cuò)誤,如果沒有才會(huì)從上到下執(zhí)行。
如果兩個(gè)變量相加:
兩個(gè)都是number類型,那么加號(hào)的作用是相加
兩個(gè)都是string類型,那么加號(hào)的作用是連接
一個(gè)是number另一個(gè)是string,那么加號(hào)的作用是連接。
js中的函數(shù)(方法):
定義函數(shù)(聲明函數(shù))
function 函數(shù)名(參數(shù)1,參數(shù)2){
命令代碼
}
ps:參數(shù)可以有一個(gè)或多個(gè)以逗號(hào)分隔,也可以不傳參
調(diào)用函數(shù)
函數(shù)名()
ps:函數(shù)聲明不調(diào)用是不起作用的
return 在函數(shù)中返回計(jì)算結(jié)果
函數(shù)的好處
1.可重復(fù)利用
2 執(zhí)行效率快
3 使代碼變得清晰易讀
4.可封裝一部分代碼
將一段經(jīng)常使用的代碼用一個(gè)方法包起來,將來方便再次調(diào)用。
匿名函數(shù)
匿名函數(shù)就是沒有函數(shù)名,不需要調(diào)用
eg:btn.onclick = function(){}
定時(shí)器
開啟定時(shí)器
1. setTimeout() 只執(zhí)行一次
停止定時(shí)器
clearTimeout()
2. setInterval() 每隔多長(zhǎng)時(shí)間執(zhí)行一次
clearInterval()
ps:定時(shí)器在使用的時(shí)候必須定義一個(gè)變量將其存起來。
流程控制:
問題:寫一段代碼,判斷張身上有多少錢,如果錢超過300塊就請(qǐng)吃大餐,如果不夠下次記得帶夠?
if else
if(判斷條件/boolean值){
//滿足條件會(huì)執(zhí)行下面的代碼
代碼1;
}else {
//當(dāng)上面的條件不滿足,或者boolean的值為false的時(shí)候會(huì)執(zhí)行下面的代碼2
代碼2
}
注意:
1.0if后面接有判斷條件,else后面沒有接判斷條件
2.0if和else只能執(zhí)行一個(gè)。
if elseif else
判斷張身上有多少錢,如果錢超過300塊就請(qǐng)吃大餐,如果超過了200,吃中餐,如果不夠下次記得帶夠?
代碼:
if(判斷條件/boolean值){
//滿足條件會(huì)執(zhí)行下面的代碼
代碼1;
}else if(判斷條件) {
//當(dāng)上面的條件不滿足,或者boolean的值為false的時(shí)候會(huì)執(zhí)行下面的代碼2
代碼2
}
else if(判斷條件)
。。。。。
else {
最后代碼
}
注意:
1.0在if_elseif_else結(jié)構(gòu)中elseif可以有幾數(shù)個(gè)
2.0整個(gè)結(jié)構(gòu)只會(huì)執(zhí)行一個(gè)代碼段
3.0條件在判斷的是時(shí)候先寫小范圍的條件再寫大范圍的條件。
4.0 elseif后面要加判斷條件
5.0一個(gè)if可以構(gòu)成一個(gè)完整的結(jié)構(gòu)
switch_case
作用:用來判斷多個(gè)可能出現(xiàn)的值:
代碼:
switch(判斷的值){
case 具體值:
要執(zhí)行的代碼段1;
break;
case 具體值2:
要執(zhí)行的代碼段2;
break;
......
default:
要執(zhí)行的代碼段n
break;
}
注意:
1.0case結(jié)構(gòu)后面要跟一個(gè)具體的數(shù)值
2.0case結(jié)構(gòu)可以有無數(shù)個(gè)
3.0如果所有的case都不滿足,要執(zhí)行default中的內(nèi)容
4.0defalut可以不寫,并且defalut也不用寫條件
js代碼的調(diào)試:(html,css沒有辦法調(diào)試,只有js代碼可調(diào)試)
1.0打開開發(fā)人員工具,找到source選項(xiàng):
2.0調(diào)試js代碼:先在要調(diào)試的代碼的行號(hào)中加上一個(gè)斷點(diǎn):
3.0將程序命中斷點(diǎn):刷新頁(yè)面
4.0點(diǎn)擊下一步按鈕。
三元運(yùn)算符:
作用:用于判斷兩個(gè)選擇。
代碼:
==boolean表達(dá)式?代碼段1:代碼段2;==
執(zhí)行過程:
判斷boolean表達(dá)式是否成立,如果成立會(huì)執(zhí)行代碼段1,如果不成立會(huì)執(zhí)行代碼段2;
排他思想
有排他必循環(huán),先排除后確定
循環(huán):
問題:希望大家能夠在頁(yè)面上輸入100個(gè)alert(“??!”)?
有沒有一種方式能夠讓我們將這一百句話以最簡(jiǎn)單的方式書寫出來。
while循環(huán):
作用:反復(fù)執(zhí)行一段代碼:
代碼:
while(判斷條件/boolean){
代碼塊
}
while循環(huán)的執(zhí)行流程:
當(dāng)代碼執(zhí)行到while的時(shí)候,會(huì)先判斷判斷條件是否為true,如果為true,那么會(huì)執(zhí)行while大括號(hào)中的代碼塊,代碼塊執(zhí)行完畢以后,再次回到while中再進(jìn)行判斷,如果為true,再次執(zhí)行while大括號(hào)中的代碼塊,并且再次回while,如果為false就不執(zhí)行
注意:
1.0將來在寫代碼的時(shí)候一定要注意循環(huán)的判斷條件不能一直為true,會(huì)成為一個(gè)死循環(huán)。
2.0循環(huán)的條件和循環(huán)體一定要明確。
3.0將來在實(shí)際開發(fā)中我們一般不會(huì)使用while循環(huán),會(huì)使用for循環(huán)。
break:
作用:在循環(huán)內(nèi)部結(jié)束這個(gè)循環(huán)。
用法
continue:
作用:在循環(huán)的內(nèi)部結(jié)束本次循環(huán),開始下一次循環(huán):
do while:
與while是一樣的,唯一的區(qū)別就是while先判斷再做,do-while,先做再判斷;
代碼 :
do{
//要循環(huán)執(zhí)行的代碼塊
}while (條件語句/boolean)
執(zhí)行過程:
代碼從上到下執(zhí)行的過程中如果遇到了do就會(huì)先執(zhí)行一次do后面的代碼,執(zhí)行之后再通過while來進(jìn)行判斷,如果判斷通過那么再執(zhí)行一次,如果判斷不通過卻結(jié)束循環(huán)。
for循環(huán):
作用:反復(fù)執(zhí)行同一段代碼:
代碼:
for(var i = 1; 判斷條件; i++){
要循環(huán)的代碼塊:
}
執(zhí)行步驟:
當(dāng)程序運(yùn)行到for的時(shí)候,會(huì)先聲明一個(gè)變量i,并且賦值為1,判斷i是否滿足后面的判斷條件,如果滿足,執(zhí)行下面的要循環(huán)的代碼塊,代碼 塊執(zhí)行完成之后再執(zhí)行i++,再判斷判斷條件是否滿足,如果滿足再次按照上面的流程執(zhí)行,如果不滿足,直接結(jié)束for循環(huán)。
數(shù)據(jù)類型的轉(zhuǎn)換:
string,number(NaN),boolean,undefined
為什么需要數(shù)據(jù)類型的轉(zhuǎn)呢?
問題:要用戶輸入一個(gè)數(shù),我們將這個(gè)數(shù)據(jù)加一之后再輸出?
要將字符串轉(zhuǎn)成number類型以后才能進(jìn)行計(jì)算。
prompt()接收到用戶輸入的內(nèi)容是以什么類型來接收來的:
prompt接收到的內(nèi)容是string類型。
數(shù)據(jù)類型的轉(zhuǎn)換
顯示轉(zhuǎn)換:
1:轉(zhuǎn)數(shù)字:
a)Number轉(zhuǎn)換:
代碼:
var a = “123”;
a = Number(a);
注意:
如果轉(zhuǎn)換的內(nèi)容本身就是一個(gè)數(shù)值類型的字符串,那么將來在轉(zhuǎn)換的時(shí)候會(huì)返回自己。
如果轉(zhuǎn)換的內(nèi)容本身不是一個(gè)數(shù)值類型的字符串,那么在轉(zhuǎn)換的時(shí)候結(jié)果是NaN.
如果要轉(zhuǎn)換的內(nèi)容是空的字符串,那以轉(zhuǎn)換的結(jié)果是0.
b)如果是其它的字符,那么將來在轉(zhuǎn)換的時(shí)候結(jié)果是NaN.
parseInt():
代碼:
var a = “123”; a = parseInt(a);
忽略字符串前面的空格,直至找到第一個(gè)非空字符,還會(huì)將數(shù)字后面的非數(shù)字的字符串去掉。
如果第一個(gè)字符不是數(shù)字符號(hào)或者負(fù)號(hào),返回NaN
c)會(huì)將小數(shù)取整。(向下取整)
parseFloat();//浮點(diǎn)數(shù)(小數(shù))
與parseInt一樣,唯一區(qū)別是parseFloat可以保留小數(shù)。
2.轉(zhuǎn)字符串
可以將其它的數(shù)據(jù)類型轉(zhuǎn)成字符串。
a)String():
代碼:
var a = 123;
a = String(a);
b).toString()的方法來進(jìn)行轉(zhuǎn)換(包裝類)。
代碼:
var a = 123; a = a.toString();
3.轉(zhuǎn)boolean類型:
可以將其它類型轉(zhuǎn)為boolean值:
a)Boolean():
代碼:
var a =”true”; a = Boolean(a);
注意:在進(jìn)行boolean轉(zhuǎn)換的時(shí)候所有的內(nèi)容在轉(zhuǎn)換以后結(jié)果都是true,除了:false、""(空字符串)、0、NaN、undefined
隱式轉(zhuǎn)換:
a)轉(zhuǎn)number:
var a = “123”;
a = +a;
加減乘除以及最余都可以讓字符串隱式轉(zhuǎn)換成number.
b)轉(zhuǎn)string:
var a = 123;
a = a + “”;
c)轉(zhuǎn)boolean:
var a = 123;
a = !!a;
數(shù)據(jù)類型:
簡(jiǎn)單數(shù)據(jù)類型:
string
number
boolean
undefined
null
在??臻g中開辟一塊內(nèi)存,將簡(jiǎn)單的數(shù)據(jù)類型存儲(chǔ)到棧中。
復(fù)雜數(shù)據(jù)類型:
數(shù)組:Array
對(duì)象:Object;
先在??臻g中開辟一塊內(nèi)存,將數(shù)據(jù)保存到堆空間中,然后將數(shù)據(jù)在堆空間中的存儲(chǔ)地址放在棧里面去。
共同點(diǎn):都電腦的運(yùn)行內(nèi)存中的一部分。
不同點(diǎn):
堆:存儲(chǔ)空間大,運(yùn)行速度慢。
棧:存儲(chǔ)空間小,運(yùn)行速度快。
object:對(duì)象(數(shù)據(jù)類型)
作用:可以用來存儲(chǔ)數(shù)據(jù)。
保存小明的信息:
年齡,姓名,性別,愛好
由于通過變量來分別保存這些特征不太方便,所以我們干脆用一個(gè)對(duì)象來表示小明。
聲明對(duì)象:
var xiaoming = new Object();
給對(duì)象賦值:
xiaoming.age = 18;
xiaoming.name = xiaoming;
xiaoming.sex = “男”;
xiaoming.aihao = “女”;
對(duì)象的使用:
如果要得到小明的aihao:
xiaoming.aihao
可以直接通過xiaoming.aihao得到小明對(duì)應(yīng)的愛好。
數(shù)組:
問題:如果我要存儲(chǔ)10個(gè)學(xué)生的成績(jī):
作用:要以用數(shù)組存儲(chǔ)10個(gè)學(xué)生的成績(jī):
聲明數(shù)組:
var arr = new Array();
賦值:
arr[0] = 67;
arr[1]=59.9;
arr[2]=”abc”;
arr[3]=xiaoming;
取值:
arr[下標(biāo)];
注意:
1.0數(shù)組的下標(biāo)是以0開始。
2.0數(shù)組聲明以后,長(zhǎng)度可以是無限長(zhǎng)。
3.0js中的數(shù)組可以存儲(chǔ)任意的類型。
數(shù)組的遍歷:
數(shù)組中的一個(gè)屬性:
arr.length;