01-基礎(chǔ)
1.什么是js
??js是Javascript的縮寫(xiě)玖翅,是一門(mén)專(zhuān)門(mén)用來(lái)控制網(wǎng)頁(yè)內(nèi)容的行為的腳本語(yǔ)言
??js就是web標(biāo)準(zhǔn)中的行為標(biāo)準(zhǔn)
??2.在哪兒寫(xiě)js代碼
- a.寫(xiě)在標(biāo)簽的行為相關(guān)的屬性中,比如按鈕的onclicked
- b.寫(xiě)在script標(biāo)簽中嗎闽瓢,(script標(biāo)簽可以放在html中的任何位置,但是一般情況下還是放在head或者body中)
+c.寫(xiě)在外部的js文件中心赶,然后通過(guò)script標(biāo)簽導(dǎo)入扣讼,通過(guò)設(shè)置src屬性為js文件的路徑
??3.js能做些什么事情 - a.js可以在網(wǎng)頁(yè)中插入html代碼
- b.可以修改標(biāo)簽內(nèi)的內(nèi)容
- c.修改標(biāo)簽的樣式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--內(nèi)部的js-->
<script type="text/javascript">
//在這兒也可以寫(xiě)js代碼
window.alert('你好,Python')
</script>
<!--外部的的js-->
<script type="text/javascript" src="index.js">
</script>
</head>
<body>
<p id="p1">中秋節(jié)快樂(lè)</p>
<!--內(nèi)聯(lián)的js-->
<button onclick="window.alert('你好缨叫,Python')">點(diǎn)我</button>
<!--<input type="text" onfocus="window.alert('你好椭符,input')"/>-->
<!--插入html代碼-->
<script type="text/javascript">
document.write('<p>中秋節(jié)快樂(lè)</p>')
</script>
</body>
</html>
02-基礎(chǔ)語(yǔ)法
//1.注釋
//單行注釋就是在前面加“//”
/這個(gè)是多行注釋/
//2.標(biāo)識(shí)符
//要求是由字母,數(shù)字,下劃線和12
//3.js中大小寫(xiě)敏感
//4.基本數(shù)據(jù)類(lèi)型
//a.Number(數(shù)字-包含所有的數(shù)字)、Boolean(布爾類(lèi)型)耻姥、String(字符串)销钝、Array(數(shù)組 )Object(對(duì)象)。琐簇。蒸健。。
//注意:js中沒(méi)有元組和集合
//b.常用的特殊的值:NaN(表示不存在的數(shù)字),null(空婉商,一般用來(lái)清空變量中的內(nèi)容),undefined(變量沒(méi)有賦值的時(shí)候似忧,默認(rèn)就是undefined)
console.log() //相當(dāng)于Python中print函數(shù),作用是在控制臺(tái)打诱芍取()中的內(nèi)容
//5.字面量
//Number字面量:所有的數(shù)字(支持科學(xué)計(jì)數(shù)法盯捌,不支持復(fù)數(shù))
10
1e2
//Boolean字面量:只有true和false
true
false
//String字面量:用單引號(hào)或者雙引號(hào)引起來(lái)的字符集,支持轉(zhuǎn)義字符(和Python一樣)
"ssad",'afda'
'sda'
console.log('sad')
console.log('123\n12')
//Array字面量:js中數(shù)組相當(dāng)于Python中的列表
console.log(['s','1','asd',true])
//Object對(duì)象字面量:相當(dāng)于Python中的字典+對(duì)象
//注意:key相當(dāng)于屬性,value相當(dāng)于屬性的值
var dict = {a:123,true:name}
console.log(dict)
//typeof:查看數(shù)據(jù)類(lèi)型
console.log(typeof(true),typeof('asd'))
//js中的語(yǔ)法:
//a.一條語(yǔ)句結(jié)束后,可以寫(xiě)分號(hào),也可以不寫(xiě).如果一行寫(xiě)多條語(yǔ)句就必須寫(xiě)分號(hào)
//b.js中沒(méi)有縮進(jìn)語(yǔ)法的要求,需要使用代碼塊的時(shí)候,使用大括號(hào)
03-js變量
//1.js中的變量聲明
//變量必須先聲明再使用
/*語(yǔ)法:var 變量名 或者var 變量名=值
- 說(shuō)明:
- a.var:是js中聲明變量的關(guān)鍵字
- b.變量名:標(biāo)識(shí)符,不能是js中的關(guān)鍵字蘑秽;駝峰式命名(第一個(gè)單詞的首字母小寫(xiě)挽唉,后面每個(gè)單詞的首字母大寫(xiě)),見(jiàn)名知義
- c.初值:聲明的時(shí)候可以賦初值筷狼,也可以不賦
*/
var studentCount = 100
//同時(shí)聲明多個(gè)變量
var age; var name
var age1, name, studyId
var age2=10, name2 //聲明變量
name2 = 100 //修改變量中的值
name2 = [1,'aa'] //修改變量中的值
console.log(name2)
04-js中的運(yùn)算
//js中的運(yùn)算符包含:數(shù)學(xué)運(yùn)算符瓶籽、比較運(yùn)算符、邏輯運(yùn)算符埂材、賦值運(yùn)算符塑顺、三目運(yùn)算符、(位運(yùn)算)
//1.數(shù)學(xué)運(yùn)算符:+、-严拒、扬绪、/、%裤唠、(js7才有的)挤牛、++、--
//其中:+种蘸、-墓赴、、/航瞭、%诫硕、**和Python中的功能一樣
//注意:js中沒(méi)有整除對(duì)應(yīng)的運(yùn)算符
//a.++(自加):自加一
//語(yǔ)法:變量++,++變量-----》讓變量的值加一
var num = 1
num++ //相當(dāng)于Python中的 變量 += 1
++num
console.log(num)
//b.--(自加):自減一
//語(yǔ)法:變量--刊侯,--變量-----》讓變量的值減一
var num1 = 1
num1-- //相當(dāng)于Python中的 變量 -= 1
--num1
num1 -= 1
console.log(num1)
//c.賦值的時(shí)候章办,++/--寫(xiě)在變量的后面,是先賦值滨彻,然后再讓變量值加1/減1藕届,++/--寫(xiě)在變量的前面,就是先加1/減1亭饵,然后再賦值
var num2 = 10,num3 = 10,b,c
b = num2++
c = ++num3
console.log(b,c,num2,num3)
//2.比較運(yùn)算符:>,<,==,!=,>=,<=,===,!==,>==,<==
//結(jié)果值是布爾值
//==(相等休偶,只判斷值是否相等),===(完全相等冬骚。判斷值和類(lèi)型是否相等)
console.log(5==5) //true
console.log('5'==5) //true
console.log('5'=='5') //true
console.log(5===5) //true
console.log('5'===5) //false
console.log('5'==='5') //true
//3.邏輯運(yùn)算符:&&(與)椅贱,||(或),!(非)
//js的邏輯運(yùn)算符只冻,除了表示不一樣庇麦,其他的與Python中一樣
//4.賦值運(yùn)算符:=, +=喜德, -=山橄, *=, /=舍悯, %=航棱,ect,和Python中的一樣
//5.三目運(yùn)算符:?:
//語(yǔ)法:表達(dá)式1?值1:值2-----》判斷表達(dá)式1的值是否為真萌衬,如果為真整個(gè)運(yùn)算的結(jié)果就是值1饮醇,否則是值2
var value = 10>20?5:0
console.log(value)
//練習(xí):求三個(gè)數(shù)的最大值,(使用三目運(yùn)算符)
var a = 10, b = 20, c = 30
var max = (a>b?a:b)>c?(a>b?a:b):c
console.log(max)
//6.運(yùn)算順序:和Python基本一樣(數(shù)學(xué)>比較>邏輯>賦值)秕豫,也可以通過(guò)加括號(hào)來(lái)改變順序
05-分支結(jié)構(gòu)
//js中的分支結(jié)構(gòu):if語(yǔ)句,switch語(yǔ)句
//1.if語(yǔ)句
/*結(jié)構(gòu):
a.if(條件語(yǔ)句)
{
(條件成立執(zhí)行)代碼段
}
執(zhí)行過(guò)程:先判斷條件語(yǔ)句是否為true朴艰,為true就執(zhí)行代碼段
b.if-else結(jié)構(gòu):
if(條件語(yǔ)句){
代碼段1
}else{
代碼段2
}
c.if-elif-else:(這兒的else if相當(dāng)于Python中的elif)
if(條件語(yǔ)句1){
代碼段1
}else if(條件語(yǔ)句2){
代碼段2
}else{
代碼段3
}
*/
//判斷一個(gè)數(shù)是否是偶數(shù),如果是就打印偶數(shù)
var num = 10
if(num%2==0){
console.log('偶數(shù)')
}
//2.switch
/*
a.結(jié)構(gòu):
switch(表達(dá)式){
case 值1:{
代碼段1
// break(可要可不要)
}
case 值2:{
代碼段2
// break
}
...
default:{
}
}
b.執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值观蓄,然后再用這個(gè)值和后邊case關(guān)鍵字后面的值一一比對(duì),
看是否相等祠墅,找到第一個(gè)和表達(dá)式相等的case侮穿,
然后將這個(gè)case作為入口,依次執(zhí)行后邊所有的代碼毁嗦,
直到遇到break或者switch結(jié)束亲茅。
如果沒(méi)有找到和表達(dá)式的值相等的case就執(zhí)行default后面的代碼
c.注意:default可有可無(wú),case可以有很多個(gè)
*/
//練習(xí):根據(jù)數(shù)字對(duì)應(yīng)的值的不同,打印不同的結(jié)果:0-->星期天 1-->星期一 ....
var week = 4
switch(week){
case 0:
console.log('星期天')
break
case 1:
console.log('星期一')
break
case 2:
console.log('星期二')
break
case 3:
console.log('星期三')
break
case 4:
console.log('星期四')
break
case 5:
console.log('星期五')
break
case 6:
console.log('星期六')
default:
console.log('值不對(duì)')
}
//練習(xí):根據(jù)分?jǐn)?shù)分等級(jí):1-5:不及格, 6:及格, 7,8:良好 9,10:優(yōu)秀
var score = 9
switch(score){
case 1:
case 2:
case 3:
case 4:
case 5:
console.log('不及格')
break
case 6:
console.log('及格')
break
case 7:
case 8:
console.log('良好')
break
case 9:
case 10:
console.log('優(yōu)秀')
break
default:
console.log('值不對(duì)')
}
06-循環(huán)結(jié)構(gòu)
//js中的循環(huán)結(jié)構(gòu)分為:for循環(huán)和while循環(huán)
//1.for-in循環(huán):(和Python的for循環(huán)一樣)
/*
for var 變量 in 序列
{
循環(huán)體
}
執(zhí)行過(guò)程:依次從序列中取元素對(duì)應(yīng)的索引狗准,取完為止克锣,每取一次執(zhí)行一次循環(huán)體
a.遍歷字符串,取的是字符對(duì)應(yīng)的下標(biāo)
b.遍歷數(shù)組驶俊,取的是元素對(duì)應(yīng)的下標(biāo)
c.遍歷對(duì)象娶耍,取的是屬性名(key)
*/
var str= 'asdf'
for(var i in str){
// i 取的是str的下標(biāo)
console.log(str[i])
}
//2.for循環(huán):(和C語(yǔ)言的for循環(huán)一樣)
/*
for(表達(dá)式1免姿;表達(dá)式2饼酿;表達(dá)式3){
循環(huán)體
}
執(zhí)行過(guò)程:先執(zhí)行表達(dá)式1,然后再判斷表達(dá)式2的結(jié)果是否為true胚膊,
如果為true故俐,就執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體再執(zhí)行表達(dá)式3紊婉,
然后再判斷表達(dá)式2的結(jié)果是否為true药版,
如果為true,又執(zhí)行循環(huán)體喻犁,執(zhí)行完循環(huán)體再執(zhí)行表達(dá)式3槽片,
依次循環(huán),直到表達(dá)式2的結(jié)果為false為止
*/
//3.while循環(huán):(和Python一樣)
/*
while(條件語(yǔ)句){
循環(huán)體
}
*/
//4.do-while:
/*
do{
循環(huán)體
}while(條件語(yǔ)句)
執(zhí)行過(guò)程:先執(zhí)行一次循環(huán)體肢础,然后再判斷條件語(yǔ)句是否為true还栓,
為true又執(zhí)行循環(huán)體,以此類(lèi)推传轰,直到條件語(yǔ)句為false剩盒,循環(huán)結(jié)束
*/
07-函數(shù)
//1.函數(shù)的聲明
/*
function 函數(shù)名(參數(shù)列表){
函數(shù)體
}
說(shuō)明:
a.function:是js中聲明函數(shù)的關(guān)鍵字
b.函數(shù)名:標(biāo)識(shí)符,不能是關(guān)鍵字慨蛙,見(jiàn)名知義辽聊,駝峰式命名
c.參數(shù)列表:參數(shù)名1,參數(shù)名2....期贫;形參:給函數(shù)傳值
d.函數(shù)體:實(shí)現(xiàn)函數(shù)的功能
注意:函數(shù)體只有在函數(shù)調(diào)用的時(shí)候才執(zhí)行
*/
function sum(num1=5,num2=12){
console.log(num1+num2)
}
//2.函數(shù)的調(diào)用:和Python一樣
//注意:js中不支持不定長(zhǎng)參數(shù)
sum(1,9)
sum(sum1=10)
sum(num2=5)
sum(20)
//3.函數(shù)的返回值
//js中函數(shù)沒(méi)有遇到return,函數(shù)的返回值就是undefined
//注意:js中不能同時(shí)返回多個(gè)值(有元組語(yǔ)法的語(yǔ)言才支持多個(gè)返回值)
function func1(){
console.log('func1')
// return 100,'abc'
}
console.log(func1())
//逗號(hào)表達(dá)式:多個(gè)值之間用逗號(hào)隔開(kāi)跟匆,整個(gè)表達(dá)式的結(jié)果是第一個(gè)值
var nums
nums = 100,'abc',true
console.log(nums)
//4.js中,函數(shù)也可以作為變量
//5.另外一種聲明函數(shù)的方式
/*
var 變量 = function(參數(shù)列表){
函數(shù)體
}
*/
08-數(shù)據(jù)類(lèi)型
//new 類(lèi)型名(值)---->可以將其他類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)類(lèi)型的值,不能轉(zhuǎn)換的通砍,結(jié)果是NaN
//1.數(shù)字類(lèi)型(Number):所有的數(shù)字對(duì)應(yīng)的類(lèi)型
var num1 = new Number
console.log(num1+10)
//2.布爾(Boolean):true false
//Nan和0是false,空串的是true
//3.字符串(String)
//a.獲取單個(gè)字符,通過(guò)字符串[下標(biāo)]
//b.注意:js中不支持切片
// js中所有的下標(biāo),只支持0-長(zhǎng)度減一,不支持負(fù)值
//c.長(zhǎng)度:字符串.length
// console.log(str1.length)
//d.運(yùn)算符:比較和+
//+:如果是其他的數(shù)據(jù)類(lèi)型和字符串相加玛臂,js是先將其他類(lèi)型轉(zhuǎn)換成字符串,再相加
console.log(123+'acb')
//4.數(shù)組(相當(dāng)于Python中的列表)
//splice(刪除的開(kāi)始下標(biāo),刪除的元素個(gè)數(shù))
//splice(被刪除的下標(biāo)/添加的開(kāi)始下標(biāo),添加個(gè)數(shù),被添加的元素列表)
//查,通過(guò)下標(biāo)獲取元素
//增垢揩,push(''):增加元素
//刪 pop():刪除最后一個(gè)元素玖绿;shift():刪除第一個(gè)元素
//改和Python一樣