1.JS基礎(chǔ)語(yǔ)法
//1.注釋,單行
/*多行注釋
*多行注釋
/
//2.標(biāo)識(shí)符
//js標(biāo)識(shí)符就是用來(lái)命名的(給變量命名懊直,函數(shù)命名饥努,對(duì)象命名)
//js中要求標(biāo)識(shí)符是字母數(shù)字下劃線外加$組成筷登,數(shù)字還是不能開(kāi)頭
//js中大小寫(xiě)敏感
var abc = 100
console.log(abc)
// console.log 在控制臺(tái)打印括號(hào)中的內(nèi)容仑扑,和print一樣
//3.常用的數(shù)據(jù)類(lèi)型
/
a.數(shù)字類(lèi)型(Number)桶略、布爾(Boolean)、字符串類(lèi)型(String)妇汗、數(shù)組Array()、對(duì)象Object()说莫,函數(shù)founction()
數(shù)字類(lèi)型(Number)---包含所有的數(shù)字杨箭,整數(shù)和小數(shù) ,支持科學(xué)計(jì)數(shù)法,不支持復(fù)數(shù)
100,13.5,-99
console.log(4e2)
//布爾.
true
false
//字符串(String)雙引號(hào)或者單引號(hào)都可以
'abc'
"abc"
//數(shù)組(Array),相當(dāng)于python的列表
var p2=[2,43]
console.log(p2)
//(object):python中對(duì)象和字典的結(jié)合,不一樣的是這里的name储狭,age是對(duì)象互婿,值是屬性
var p1= {
name:'小明',
age:99
}
console.log(p1)
//founction(函數(shù)):相當(dāng)于python中的函數(shù)
function hanshu1(){
console.log('我是函數(shù)')
}
hanshu1()
/*
b.typeof(數(shù)據(jù))- 查看數(shù)據(jù)類(lèi)型
c. new 類(lèi)型名(數(shù)據(jù))--將數(shù)據(jù)轉(zhuǎn)換成指定的類(lèi)型
d.常用的特殊值underfined(相當(dāng)于python中的none) null(一般用來(lái)清空變量)
*/
//4.格式 :js沒(méi)有縮進(jìn)的要求
2.JS中的變量
js變量
語(yǔ)法:
var 變量名
變量名 = 值
說(shuō)明 :
var -是js關(guān)鍵字,聲明變量的時(shí)候可以要var辽狈,也可以不用慈参,但如果不要var變量就必須賦值,否則報(bào)錯(cuò)刮萌。
如果寫(xiě)了var變量可以不賦值,會(huì)返回underfined
變量名--標(biāo)識(shí)符,不能是關(guān)鍵字先口。駝峰式命名規(guī)范 除了首單詞首字母多個(gè)單詞命名首字母大寫(xiě)
//聲明變量
var name1 = '小明'
var name2
name3 = '小花'
//同時(shí)聲明多個(gè)變量
var age,sex='男',score=100
console.log(sex,age,score)
//變量中的值:可以賦任何其他類(lèi)型的值樟澜。字符串,數(shù)字等等....
age,name = '老年人','小花'
console.log(age,name)
3.運(yùn)算符
//js支持:數(shù)學(xué)運(yùn)算符涮阔,比較運(yùn)算符猜绣,邏輯運(yùn)算符,賦值運(yùn)算符澎语,位運(yùn)算符
//1.數(shù)學(xué)運(yùn)算符:+,-,*,%,++,--,** -->不支持整除//
//++ (自加1)途事,--(自減1)
//變量++,變量--擅羞,++變量尸变,--變量(變量必須要有值)符號(hào)在前在后都一樣
//注意賦值的時(shí)候++和--寫(xiě)在變量的前面和變量的后面對(duì)應(yīng)的效果不一樣
var number = 10
number++
++number
--number
console.log(number)
//2.比較運(yùn)算符:>,<,==,!=,>=,<=,===,!==,<==,>==
//比較運(yùn)算的返回值都是Boolean
// ==(相等)----判斷值是否相等
//===(完全相等)----判斷值和類(lèi)型是否相等
console.log(5==5)//T
console.log(5=='5')//T
console.log(5===5) //T
console.log(5==='5')//F
//3.邏輯運(yùn)算符:&&(與),||(或),!(非)
//運(yùn)算規(guī)則和python中的and减俏、or召烂、not一模一樣
//4.賦值運(yùn)算符: = ,+= , -= ,*= ,/= ,%=
//和python一樣
//5.位運(yùn)算符:&與 , |或 , ^異或 , ~取反,>>,<<
//和python一樣
//6.符合運(yùn)算:數(shù)學(xué)>比較>邏輯>賦值
//可以通過(guò)加()來(lái)改變運(yùn)算順序
4.分之結(jié)構(gòu)
JS中的分之結(jié)構(gòu)有兩種,分別是if結(jié)構(gòu)和switch結(jié)構(gòu)
1.if語(yǔ)句
結(jié)構(gòu):
if(條件語(yǔ)句):{
代碼段1
}
說(shuō)明:
if--關(guān)鍵字
(){}----固定寫(xiě)法
執(zhí)行過(guò)程:
判斷條件語(yǔ)句是否為true娃承,為true就執(zhí)行大括號(hào){}中的內(nèi)容奏夫。不管縮進(jìn)問(wèn)題怕篷。
b.if-else結(jié)構(gòu)
if(條件1){
代碼段1
}else{
代碼段2}
和python中的執(zhí)行過(guò)程一樣
c.else if 結(jié)構(gòu)和python中的elif節(jié)后一樣
if(條件1){
代碼段1
}else if(條件2){
}else if(條件3){
}else{
}
2.switch語(yǔ)句
switch(變量或者有值的表達(dá)式){
case 值1:{代碼段1}
case 值2:{代碼段2}
case 值3:{代碼段3}
case 值4:{代碼段4}
...
default:{代碼段5}
}
執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,然后從上往下一一和case后面的值進(jìn)行比較酗昼,找到第一個(gè)和表達(dá)式的值相等的case的值
然后將執(zhí)行后面所有case的代碼段廊谓,直到執(zhí)行完或者遇到break為止。
如果沒(méi)有值和表達(dá)式的值一樣麻削,就執(zhí)行default后面的代碼段
num =10
switch(num){
case 1:console.log('1')
case 2:console.log('2')
case 3:console.log('3')
case 10:console.log('正確')
case 11:console.log('我是11')
break
default:console.log('我是default')
}
//練習(xí):輸入0-6輸出1-7
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('周日')
}
5.循環(huán)結(jié)構(gòu)
for in 結(jié)構(gòu)和python中的循環(huán)結(jié)構(gòu)一樣蒸痹,不過(guò)這里的for in取出來(lái)的是序列元素的下標(biāo),如果是對(duì)象取出來(lái)的則是對(duì)象的key(屬性名)
結(jié)構(gòu):
for 變量 in 序列{
循環(huán)體
}
for (x in 'abc'){
console.log('abc'[x])
}
取出來(lái)的x是下標(biāo)呛哟,在通過(guò)下標(biāo)取 出來(lái)元素
b. C語(yǔ)言的for循環(huán)結(jié)構(gòu)
for(表達(dá)式1叠荠;表達(dá)式2條件語(yǔ)句;表達(dá)式3){
循環(huán)體
}
直到思想:語(yǔ)句塊之間要用分號(hào)隔開(kāi)扫责!語(yǔ)句塊1里面寫(xiě)循環(huán)開(kāi)始前的準(zhǔn)備工作榛鼎,例如聲明變量,語(yǔ)句塊1可以省略也可以設(shè)置多個(gè)值用逗號(hào)隔開(kāi)鳖孤。語(yǔ)句塊2里面寫(xiě)執(zhí)行循環(huán)體的條件者娱。用來(lái)控制執(zhí)行循環(huán)體的次數(shù)。語(yǔ)句塊3用來(lái)改變初始變量的值淌铐,改變循環(huán)次數(shù)
執(zhí)行過(guò)程:
先進(jìn)入語(yǔ)句塊1肺然,判斷條件2是否為true,如果為true就執(zhí)行循環(huán)體腿准,執(zhí)行完成后進(jìn)入語(yǔ)句塊3际起,執(zhí)行完語(yǔ)句塊3后在判斷2是否為true,如果為true就繼續(xù)執(zhí)行循環(huán)體吐葱,再進(jìn)入3...以此類(lèi)推直到2位false街望。循環(huán)就結(jié)束~
c. while循環(huán)和python中的while循環(huán)一樣
結(jié)構(gòu):
while(條件){
循環(huán)體}
d. do while循環(huán)結(jié)構(gòu)--->先執(zhí)行一次循環(huán)體,在判斷條件是否為true弟跑,為true就繼續(xù)執(zhí)行灾前,直到false為止,至少能執(zhí)行一次循環(huán)體
do{
循環(huán)體
}while(條件)
3.js中的break和continue和python中一樣
6.函數(shù)
函數(shù)還是分為聲明和調(diào)用孟辑,聲明的時(shí)候不會(huì)執(zhí)行函數(shù)體哎甲,調(diào)用的時(shí)候才會(huì)執(zhí)行函數(shù)體
1.函數(shù)的聲明,和python中一樣
function 函數(shù)名(參數(shù)列表){
函數(shù)體
return 返回值
}
說(shuō)明:
function是聲明函數(shù)的關(guān)鍵字饲嗽,
函數(shù)名 --駝峰式命名炭玫,見(jiàn)名知意
參數(shù)列表--如果沒(méi)有設(shè)置默認(rèn)值,相當(dāng)于默認(rèn)值為undefined
返回值--return或者undefined(none)
b.以聲明變量的方式聲明函數(shù) 這種相當(dāng)于把函數(shù)名字放在前面貌虾。函數(shù)名 =吞加。。。
函數(shù)名 = function (參數(shù)列表){
函數(shù)體
return 返回值
}
function sum(m,n){
return m+n
}
console.log(sum(2,3))
調(diào)用:函數(shù)名(實(shí)參列表)
調(diào)用的時(shí)候參數(shù)少傳多傳不會(huì)報(bào)錯(cuò)衔憨,但還是保證每個(gè)都有就可以了叶圃。
只能通過(guò)位置參數(shù)傳參,關(guān)鍵字參數(shù)無(wú)效践图,還是按照位置傳參
js中不支持不定長(zhǎng)參數(shù)
7.字符串
由單引號(hào)或者雙引號(hào)括起來(lái)的
1.轉(zhuǎn)義字符:和python中的一樣
2.字符串長(zhǎng)度: 字符串.length
3.獲取單個(gè)字符:字符串[下標(biāo)]
注意: 下標(biāo)取值范圍是0 ~ 長(zhǎng)度-1掺冠;超出范圍取到的是undefined;
js中沒(méi)有切片語(yǔ)法
//轉(zhuǎn)義字符
console.log('abc\n123')
console.log('\tabc\'123')
//字符串長(zhǎng)度
console.log('123abc'.length)
//獲取單個(gè)字符
str1 = 'hello world'
console.log(str1[1])
2.相關(guān)運(yùn)算符
+ - 將兩個(gè)字符串拼接在一起產(chǎn)生一個(gè)新的字符串
(注意如果是一個(gè)字符串加上其他的數(shù)據(jù),會(huì)先將其他數(shù)據(jù)轉(zhuǎn)換成字符串再相加)
js不支持*運(yùn)算符
比較運(yùn)算(>, <. ==, !=, ===, !==)
>码党、< - 和python一樣赫舒,還是比字符編碼值的大小
console.log('abc'+'hnm')
console.log('abc'+100, 'abc'+true, 'abc'+[1,2,3])
// str1 = new String([10, 20, 30])
// console.log(str1)
// console.log('abc'*3) // NaN -> not a number
// console.log(10/0) // Infinity -> 無(wú)窮大
console.log('abc' > 'abaaaa')
js的正則表達(dá)式寫(xiě)在//兩個(gè)斜杠之間。
8.數(shù)組
數(shù)組就是python中的列表
1.數(shù)組是有序闽瓢,可變的,里面的元素可以是任意類(lèi)型的數(shù)據(jù)
2.增刪改查
a.查(獲取數(shù)組中的元素) - 不支持切片
數(shù)組[下標(biāo)]
數(shù)組.slice(開(kāi)始下標(biāo), 結(jié)束下標(biāo)) - 切片
arr1 = [1, 2, 3, 'abc']
console.log(arr1[3])
//獲取數(shù)組的長(zhǎng)度
console.log(arr1.length)
result = arr1.slice(0, 2)
console.log(result, arr1)
/*
b.增(添加元素)
數(shù)組.push(元素) - 將元素添加到數(shù)組的最后
*/
arr1.push('hello')
console.log(arr1)
/*
c.刪(刪除元素)
數(shù)組.pop() - 刪除最后一個(gè)元素
數(shù)組.splice(開(kāi)始刪除的下標(biāo), 刪除的個(gè)數(shù)) - 從數(shù)組指定的下標(biāo)開(kāi)始刪除指定個(gè)數(shù)元素
*/
arr1.pop()
console.log(arr1)
arr1.splice(2, 1)
console.log(arr1)
/*
d.改(修改元素的值)
數(shù)組[下標(biāo)] = 新值 - 修改指定下標(biāo)的元素
數(shù)組.splice(開(kāi)始下標(biāo),個(gè)數(shù), 多個(gè)其他參數(shù)) - 用其他參數(shù)替換開(kāi)始下標(biāo)開(kāi)始后的指定個(gè)數(shù)個(gè)元素
*/
arr1 = [1, 2, 3, 4, 'abc']
arr1[0] = 10
console.log(arr1)
arr1.splice(1,2, 'a','b', 'c')
console.log(arr1)
9.對(duì)象
//js中沒(méi)有python的類(lèi),只有對(duì)象和構(gòu)造方法
/*1.對(duì)象的字面量
對(duì)象名 = {屬性名:屬性值, 屬性名2: 屬性值2...}
3.構(gòu)造方法 - 用來(lái)創(chuàng)建對(duì)象的
function 類(lèi)名(參數(shù)列表){
this.屬性1 = 屬性值1
this.屬性2 = 屬性值2
...
return this //這句話必須寫(xiě)
}
這兒的this類(lèi)似python中的self心赶,表示當(dāng)前對(duì)象
這兒的this類(lèi)似python中的self扣讼,表示當(dāng)前對(duì)象
function Person(name1, age1){
//對(duì)象屬性
this.name = name1
this.age = age1
this.tel = ''
this.sex = '男'
//對(duì)象方法
this.eat = function (food){
console.log(this.name+'在吃'+food)
}
return this
}
p2 = Person('小明', 18)
p2.tel = '1727839923'
p2.eat('面條')
p3 = Person('小花', 20)
p3.sex = '女'
p3.eat('面包')
~~~