1.js基礎(chǔ)語(yǔ)法
1.1.控制臺(tái)輸出 和print功能一樣
console.log(100)
console.log('lorry',200,20)
1.2 注釋
//單行注釋
/*
*多行注釋
*多行注釋
*/
1.3標(biāo)識(shí)符:
由字母數(shù)字下畫面和12s = 30
//12a = 30 數(shù)字不能開頭
// as^ = 200
1.4:行和縮進(jìn)
從語(yǔ)法角度,js代碼怎么換行和縮進(jìn)都無所謂。js中通過{}確定一個(gè)代碼塊
1.5:常見的數(shù)據(jù)類型:數(shù)字,布爾,字符串,數(shù)組,對(duì)象,函數(shù)
- a:數(shù)字:(Number) - 包含所有的數(shù)字,包括整數(shù)和小數(shù);例如100,12.5,-200,3e2,不支持虛數(shù)
- b.布爾(Boolean) - 只有兩個(gè)值true和false,這兩個(gè)是關(guān)鍵字,分別代表真和假
- c.字符串,string - 使用單引號(hào)或者雙引號(hào)引起來的字符集
- d.列表(Array) - 相當(dāng)于Python中的列表,[12,'abc',true]
- e;對(duì)象(Object) - 相當(dāng)于Python中的字典和對(duì)象{屬性:值}
- f:函數(shù)(Function) - 相當(dāng)于Python中的函數(shù)
console.log(3e2,"lorry",'lorrybz',[12,'abc',true])
obj1 = {name:'小明',age:10}
console.log(obj1['name'],obj1.name)
1.5:聲明函數(shù)
function eat(food){
console.log("吃"+food)
}
eat('面條')
2.變量的聲明
語(yǔ)法1.變量名 = 值
變量名 - 標(biāo)識(shí)符,不能是關(guān)鍵字;駝峰式命名(第一個(gè)單詞首字母小寫,后邊每個(gè)單詞首字母大寫),見名知意
變量要先聲明才能使用語(yǔ)法2:var 變量名 = 值 或者直接不賦值.
var - 聲明變量的關(guān)鍵字
區(qū)別:添加var的時(shí)候,變量可以不用賦值,默認(rèn)是undefined,不加var就必須賦值
補(bǔ)充:js中兩個(gè)特殊的值 - undefined(沒有,空)和null(清空)
name = '小明'
console.log(name)
arr1 = [1,34,45]
console.log(arr1[10])
var age = 10
var sex //通過var聲明變量不賦值的時(shí)候,默認(rèn)是undefined
console.log(age,sex)
//重新賦值
name = '小明'
age = 25
sex = '男'
console.log(name,age,sex)
同時(shí)聲明多個(gè)變量賦不同的值以及相同的值
//同時(shí)聲明多個(gè)變量,賦一樣的值
a1 = a2 = a3 = 10
console.log(a1,a2,a3)
//同事聲明多個(gè)變量,賦不同的值
var b1 = 1,b2 = 2,b3 = 3,b4
b1 = 1,b2 = 2,b3 = 3
console.log(b1,b2,b3,b4)
3.運(yùn)算符
1.數(shù)學(xué)運(yùn)算符:+ - * / ++ --
前面四個(gè)運(yùn)算符和Python一模一樣,
++ -- 都是單目運(yùn)算符,只能對(duì)一個(gè)值進(jìn)行操作
使用方式:變量++/--,++/--變量
a.++ - 自加1運(yùn)算;讓變量本身的值加1
b.自減1運(yùn)算:讓變量本身的值減1
num = 10
num++
console.log(num) //11
++num
console.log(num) //12
num--
console.log(num) //11
--num
console.log(num) //10
注意:用一個(gè)變量使用單獨(dú)使用++、--的時(shí)候,++/--放前面放后面效果一樣
如果使用++/--的結(jié)果給另外一個(gè)變量賦值的,++/--放前面,先自加再賦值,放后面先賦值再運(yùn)算
num2 = 10
num = (++num2) //相當(dāng)于:num2 += 1;num = num2
console.log(num,num2)
num2 = 10
num = num2++ //相當(dāng)于:num = num2;num2 += 1
console.log(num,num2)
2.比較運(yùn)算符
,< ==,!=,>=,<= === !==
結(jié)果是布爾值
比較大小和Python一樣
a.==判斷值是否相等
b.===判斷值和類型是否相等(完全相等),相當(dāng)于Python中==,!==相當(dāng)于Python中的不等
console.log(5 == 5) // true
console.log(5 == '5') //true
console.log(5 != 5) // flase
console.log(5 != '5') //flase
console.log(5 === 5) // true
console.log(5 === '5') //flase
console.log(5 !== 5) // flase
console.log(5 !== '5') //true
3邏輯運(yùn)算符:
&&(與) ||(或) ?。ǚ牵?br> 運(yùn)算規(guī)則和使用方式和Python的一模一樣
console.log(true && true)
console.log(true && false)
console.log(true || false)
console.log(false || false)
console.log(!true)
console.log(!false)
4.賦值運(yùn)算符
+=,-=,*=,/=,%=
5.三目運(yùn)算符
條件語(yǔ)句? 值1:值2 - 判斷條件語(yǔ)句的值是否為true,為true整個(gè)表達(dá)式的結(jié)果就是值1,否則就是值2
age = 16
is_man = age >= 18? '成年' : '未成年'
console.log(is_man)
6.運(yùn)算符
數(shù)學(xué) 》 比較》邏輯》賦值:如果有括號(hào),先算括號(hào)里面的
4.分支結(jié)構(gòu)
1.if分之
1.if語(yǔ)句
* a.if
* if(條件語(yǔ)句){
* 滿足條件會(huì)執(zhí)行的代碼
* }
*
b.if - else
* if(條件語(yǔ)句){
* 代碼段1
* }
* else{
* 代碼段2
* }
*
c.if else if -else
* if(條件語(yǔ)句){
* 代碼段1
* }
* else if(條件語(yǔ)句2){
* 代碼段2
* }
* else(代碼段n){
* 代碼段n
* }
* 執(zhí)行過程和Python一模一樣
num = 10
if(num % 2){
console.log('奇數(shù)')
}else{
console.log('偶數(shù)')
}
age = 20
if(age < 18){
console.log("未成年")
}else if(age < 60){
console.log('成年')
}else{
console.log('老年')
}
2.switvh語(yǔ)句
1.結(jié)構(gòu)
switch(表達(dá)式){
case 值1:
代碼段1
case 值2:
代碼段2
。。。。。
default:
代碼段
}
2.執(zhí)行過程
使用用表達(dá)式的值依次和后面每個(gè)case后面的值進(jìn)行比較,看是否相等,找到第一個(gè)和表達(dá)式相等的case,將case作為入口,依次執(zhí)行后面的代碼段直到,執(zhí)行完成,或者遇到break為止
如果每個(gè)case的值和表達(dá)式的值都不想等,就執(zhí)行default后面的代碼
注意:case后面必須是一個(gè)有結(jié)果的表達(dá)式
/練習(xí):用一個(gè)變量保存十分制的成績(jī),根據(jù)成績(jī)打印情況:
0-5:代表不及格
6,及格
7,8良好
9,10優(yōu)秀,
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
default:
console.log('優(yōu)秀')
}
3.循環(huán)結(jié)構(gòu)
1.for循環(huán)
a.for in
for (變量 in 序列){
循環(huán)體
}
執(zhí)行過程和python是一樣的,但是變量取到的不是元素,而是下標(biāo)key(屬性名
序列 - 字符串,數(shù)組,對(duì)象
for(x in "abc"){
console.log('=====')
console.log(x)
}
arr1 = [1,'abc',true,12.5]
for(index in arr1){
console.log(index,arr1[index])
}
person1 = {name:"小明",age:'18',sex:'男'}
//typeof拿到的是類型
for(x in person1){
console.log('啦啦啦啦',x,typeof(x))
console.log(person1[x])
}
補(bǔ)充:c語(yǔ)言的循環(huán)
- 結(jié)構(gòu):
for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
循環(huán)體
}
執(zhí)行過程:先執(zhí)行表達(dá)式1,判斷表達(dá)式2的值是否為true,如果為true就執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體就執(zhí)行循環(huán)體3 - 然后再判斷表達(dá)式2是否為True,如果為true就執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體再執(zhí)行表達(dá)式
....一次類推,知道表達(dá)式2的結(jié)果為false為止(循環(huán)結(jié)束)
表達(dá)式1
while 表達(dá)式2
循環(huán)體
表達(dá)式3
num = 1
sum1 = 0
while(num <= 100){
sum1 += num
num += 1
}
console.log(sum1)
for(num = 1,sum1 = 0;num <= 100;num++){
sum1 += num
}
console.log(sum1)
2.while循環(huán)
a.Python中的while循環(huán)
while(條件語(yǔ)句){
循環(huán)體
}
執(zhí)行過程和Python一模一樣
do while循環(huán)
do{
循環(huán)體
}while條件語(yǔ)句
區(qū)別:do while的循環(huán)體至少執(zhí)行一次
num = 0
sum2 = 0
do{
sum2 += num
num ++
}while(num <= 100)
console.log(sum2)
4.函數(shù)的聲明
結(jié)構(gòu)1.函數(shù)的聲明
function 函數(shù)名(參數(shù)列表){
函數(shù)體
}
** js中的函數(shù)除了聲明的關(guān)鍵字不一樣,其他的都一樣**
//參數(shù)可以設(shè)置默認(rèn)值
function sum(num1,num2 = 3){
console.log("求兩個(gè)數(shù)的和")
return num1+num2
}
//2.函數(shù)的調(diào)用(實(shí)參列表)
console.log(sum(10,20))
console.log(sum(10))
console.log(sum(num1 = 10,num2 = 20))
//js中所有的函數(shù)都有返回值,默認(rèn)值是undefined
function func1(){
console.log('func1')
}
re = func1()
console.log(re,typeof(re))
結(jié)構(gòu)2:.匿名函數(shù)(函數(shù)的字面量)
函數(shù)名 = lambda 參數(shù)列表:返回值
函數(shù)名 = function(參數(shù)列表){函數(shù)體}
func2 = function(a,b){
console.log(a,b)
return a*b
}
console.log(func2(3,4))
funcs_arr = [func1,function(a){console.log(a)}]
funcs_arr[0]()
funcs_arr[1]("abc")
6.變量的作用域:
js中的作用域
a.全局變量:只要申明在函數(shù)外邊就是全局變量,在函數(shù)中以變量名 = 值的形式聲明的變量
也是全局的。
b.局部變量:聲明在函數(shù)中,并且以var關(guān)鍵字聲明在函數(shù)中變量才是局部變量
var1 = 1000 //這是一個(gè)全局變量
var var2 = "abc"http://這是一個(gè)全局變量
for(xxx in "hello"){
}
var3 = 1
func3 = function(){
console.log('func3')
a1 = 20 //這是一個(gè)全局變量
b1 = 20 //這是一個(gè)全局變量
var4 = 4 //這是一個(gè)全局變量
var var3 = 1 //這是一個(gè)局部變量
return var1 +var2
}
console.log(func3())
console.log(a1+var4)
7.字符串
1.字符串的字面量
a.使用雙引號(hào)或者單引號(hào)括起來的字符集
b.字符可以是轉(zhuǎn)義字符 \r,\t,\n,\,',"
c.\u四位的十六進(jìn)制值對(duì)應(yīng)的Unicode編碼,如:\u4e00
str1 = 'abc\n123'
console.log(str1)
str2 = "abc\"123\u4e00"
console.log(str2)
2.獲取字符串
字符串[下標(biāo)] - 獲取單個(gè)字符*
下標(biāo) - 范圍是0-(長(zhǎng)度-1):下標(biāo)越界,取到的值是undefined
s中沒有切片的方法
str1 = 'hello'
console.log(str1[1])
3.相關(guān)運(yùn)算
NaN ,js中的一個(gè)特殊的值,類似于undefined,null,用來表示一個(gè)不存在的數(shù)值。
字符串+數(shù)據(jù):支持字符串和其他任何數(shù)據(jù)相加,是將其他數(shù)據(jù)全部轉(zhuǎn)換成字符串,然后再拼接。
支持加法運(yùn)算
4.字符串長(zhǎng)度`
console.log('hello world'.length)
str3 = 'abc' //str是字符串尅性
str4 = new String(str3)
console.log(str3 == str4,str3 === str4)
console.log(str3[1],str4[1])
//protype:給指定類型的對(duì)象添加屬性和方法
String.prototype = "lorry"
console.log("abc".lorry)
5.字符串的相關(guān)方法
function lorry_print(aa){
console.log(aa)
}
lorry_print("abc".charAt(2))
lorry_print(String.fromCharCode(97))
lorry_print('abcd12abc23hhhh123'.match(/\d+/g))
result = 'abcd12abc23hhhh123'.match(/\d+/)
for(index in result){
lorry_print(index)
}
lorry_print('abcd12abc23hhhh123'.replace(/\d+/g,'*'))
//js中的數(shù)組只是需要關(guān)注a.怎樣獲取數(shù)組減的元素,b.數(shù)組對(duì)應(yīng)的方法,c.元素可以是任何類型
arr = [1,'abc',true]
lorry_print(arr)
nums = [1,34,67,2]
nums2=nums.sort()
lorry_print(nums)
lorry_print(nums2)