1.JS基礎(chǔ)語法
//1.注釋,單行
/*多行注釋
*多行注釋
/
//2.標(biāo)識符
//js標(biāo)識符就是用來命名的(給變量命名,函數(shù)命名,對象命名)
//js中要求標(biāo)識符是字母數(shù)字下劃線外加$組成,數(shù)字還是不能開頭
//js中大小寫敏感
var abc = 100
console.log(abc)
// console.log 在控制臺打印括號中的內(nèi)容,和print一樣
//3.常用的數(shù)據(jù)類型
/
a.數(shù)字類型(Number)、布爾(Boolean)、字符串類型(String)、數(shù)組Array()、對象Object(),函數(shù)founction()
數(shù)字類型(Number)---包含所有的數(shù)字,整數(shù)和小數(shù) ,支持科學(xué)計數(shù)法,不支持復(fù)數(shù)
100,13.5,-99
console.log(4e2)
//布爾.
true
false
//字符串(String)雙引號或者單引號都可以
'abc'
"abc"
//數(shù)組(Array),相當(dāng)于python的列表
var p2=[2,43]
console.log(p2)
//(object):python中對象和字典的結(jié)合,不一樣的是這里的name,age是對象,值是屬性
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ù)類型
c. new 類型名(數(shù)據(jù))--將數(shù)據(jù)轉(zhuǎn)換成指定的類型
d.常用的特殊值underfined(相當(dāng)于python中的none) null(一般用來清空變量)
*/
//4.格式 :js沒有縮進(jìn)的要求
2.JS中的變量
js變量
語法:
var 變量名
變量名 = 值
說明 :
var -是js關(guān)鍵字,聲明變量的時候可以要var,也可以不用,但如果不要var變量就必須賦值,否則報錯。
如果寫了var變量可以不賦值,會返回underfined
變量名--標(biāo)識符,不能是關(guān)鍵字。駝峰式命名規(guī)范 除了首單詞首字母多個單詞命名首字母大寫
//聲明變量
var name1 = '小明'
var name2
name3 = '小花'
//同時聲明多個變量
var age,sex='男',score=100
console.log(sex,age,score)
//變量中的值:可以賦任何其他類型的值。字符串,數(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)
//變量++,變量--,++變量,--變量(變量必須要有值)符號在前在后都一樣
//注意賦值的時候++和--寫在變量的前面和變量的后面對應(yīng)的效果不一樣
var number = 10
number++
++number
--number
console.log(number)
//2.比較運(yùn)算符:>,<,==,!=,>=,<=,===,!==,<==,>==
//比較運(yùn)算的返回值都是Boolean
// ==(相等)----判斷值是否相等
//===(完全相等)----判斷值和類型是否相等
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é)>比較>邏輯>賦值
//可以通過加()來改變運(yùn)算順序
4.分之結(jié)構(gòu)
JS中的分之結(jié)構(gòu)有兩種,分別是if結(jié)構(gòu)和switch結(jié)構(gòu)
1.if語句
結(jié)構(gòu):
if(條件語句):{
代碼段1
}
說明:
if--關(guān)鍵字
(){}----固定寫法
執(zhí)行過程:
判斷條件語句是否為true,為true就執(zhí)行大括號{}中的內(nèi)容。不管縮進(jìn)問題。
b.if-else結(jié)構(gòu)
if(條件1){
代碼段1
}else{
代碼段2}
和python中的執(zhí)行過程一樣
c.else if 結(jié)構(gòu)和python中的elif節(jié)后一樣
if(條件1){
代碼段1
}else if(條件2){
}else if(條件3){
}else{
}
2.switch語句
switch(變量或者有值的表達(dá)式){
case 值1:{代碼段1}
case 值2:{代碼段2}
case 值3:{代碼段3}
case 值4:{代碼段4}
...
default:{代碼段5}
}
執(zhí)行過程:先計算表達(dá)式的值,然后從上往下一一和case后面的值進(jìn)行比較,找到第一個和表達(dá)式的值相等的case的值
然后將執(zhí)行后面所有case的代碼段,直到執(zhí)行完或者遇到break為止。
如果沒有值和表達(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)一樣,不過這里的for in取出來的是序列元素的下標(biāo),如果是對象取出來的則是對象的key(屬性名)
結(jié)構(gòu):
for 變量 in 序列{
循環(huán)體
}
for (x in 'abc'){
console.log('abc'[x])
}
取出來的x是下標(biāo),在通過下標(biāo)取 出來元素
b. C語言的for循環(huán)結(jié)構(gòu)
for(表達(dá)式1;表達(dá)式2條件語句;表達(dá)式3){
循環(huán)體
}
直到思想:語句塊之間要用分號隔開!語句塊1里面寫循環(huán)開始前的準(zhǔn)備工作,例如聲明變量,語句塊1可以省略也可以設(shè)置多個值用逗號隔開。語句塊2里面寫執(zhí)行循環(huán)體的條件。用來控制執(zhí)行循環(huán)體的次數(shù)。語句塊3用來改變初始變量的值,改變循環(huán)次數(shù)
執(zhí)行過程:
先進(jìn)入語句塊1,判斷條件2是否為true,如果為true就執(zhí)行循環(huán)體,執(zhí)行完成后進(jìn)入語句塊3,執(zhí)行完語句塊3后在判斷2是否為true,如果為true就繼續(xù)執(zhí)行循環(huán)體,再進(jìn)入3...以此類推直到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)用,聲明的時候不會執(zhí)行函數(shù)體,調(diào)用的時候才會執(zhí)行函數(shù)體
1.函數(shù)的聲明,和python中一樣
function 函數(shù)名(參數(shù)列表){
函數(shù)體
return 返回值
}
說明:
function是聲明函數(shù)的關(guān)鍵字,
函數(shù)名 --駝峰式命名,見名知意
參數(shù)列表--如果沒有設(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ù)傳參,關(guān)鍵字參數(shù)無效,還是按照位置傳參
js中不支持不定長參數(shù)
7.字符串
由單引號或者雙引號括起來的
1.轉(zhuǎn)義字符:和python中的一樣
2.字符串長度: 字符串.length
3.獲取單個字符:字符串[下標(biāo)]
注意: 下標(biāo)取值范圍是0 ~ 長度-1;超出范圍取到的是undefined;
js中沒有切片語法
//轉(zhuǎn)義字符
console.log('abc\n123')
console.log('\tabc\'123')
//字符串長度
console.log('123abc'.length)
//獲取單個字符
str1 = 'hello world'
console.log(str1[1])
2.相關(guān)運(yùn)算符
+ - 將兩個字符串拼接在一起產(chǎn)生一個新的字符串
(注意如果是一個字符串加上其他的數(shù)據(jù),會先將其他數(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 -> 無窮大
console.log('abc' > 'abaaaa')
js的正則表達(dá)式寫在//兩個斜杠之間。
8.數(shù)組
數(shù)組就是python中的列表
1.數(shù)組是有序,可變的,里面的元素可以是任意類型的數(shù)據(jù)
2.增刪改查
a.查(獲取數(shù)組中的元素) - 不支持切片
數(shù)組[下標(biāo)]
數(shù)組.slice(開始下標(biāo), 結(jié)束下標(biāo)) - 切片
arr1 = [1, 2, 3, 'abc']
console.log(arr1[3])
//獲取數(shù)組的長度
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() - 刪除最后一個元素
數(shù)組.splice(開始刪除的下標(biāo), 刪除的個數(shù)) - 從數(shù)組指定的下標(biāo)開始刪除指定個數(shù)元素
*/
arr1.pop()
console.log(arr1)
arr1.splice(2, 1)
console.log(arr1)
/*
d.改(修改元素的值)
數(shù)組[下標(biāo)] = 新值 - 修改指定下標(biāo)的元素
數(shù)組.splice(開始下標(biāo),個數(shù), 多個其他參數(shù)) - 用其他參數(shù)替換開始下標(biāo)開始后的指定個數(shù)個元素
*/
arr1 = [1, 2, 3, 4, 'abc']
arr1[0] = 10
console.log(arr1)
arr1.splice(1,2, 'a','b', 'c')
console.log(arr1)
9.對象
//js中沒有python的類,只有對象和構(gòu)造方法
/*1.對象的字面量
對象名 = {屬性名:屬性值, 屬性名2: 屬性值2...}
3.構(gòu)造方法 - 用來創(chuàng)建對象的
function 類名(參數(shù)列表){
this.屬性1 = 屬性值1
this.屬性2 = 屬性值2
...
return this //這句話必須寫
}
這兒的this類似python中的self,表示當(dāng)前對象
這兒的this類似python中的self,表示當(dāng)前對象
function Person(name1, age1){
//對象屬性
this.name = name1
this.age = age1
this.tel = ''
this.sex = '男'
//對象方法
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('面包')
~~~