01.js基礎(chǔ)語法
02.變量的聲明
03.運(yùn)算符
04.分之結(jié)構(gòu)
05.循環(huán)結(jié)構(gòu)
06.函數(shù)
07.數(shù)據(jù)類型
01.js基礎(chǔ)語法
1. js中的注釋
- //這是單行注釋
- /*
這個(gè)是多行注釋
*/
2.語句
- 一條語句結(jié)束需要加分號(hào)(現(xiàn)在的js版本也可以不用寫)
- 一行寫多條語句必須使用分號(hào)隔開
3.js沒有縮進(jìn)問題,用{}表示一個(gè)塊
4.基本數(shù)據(jù)類型
Number(數(shù)字)、String(字符串)、Boolean(布爾)、Array(數(shù)組)-- 列表、Object(對(duì)象)--字典、Function(函數(shù))、null、undefined
- 在控制臺(tái)中打印括號(hào)中的內(nèi)容,功能和python中的print一樣
console.log('hello world');
console.log('你好,python');

5.字面量
- 數(shù)字字面量
89;
100;
10.34;
3e8;
*字符串字面量
'abc';
"abc";
- 布爾字面量
true;
false;
- 數(shù)組字面量
[1,2,'ban',true];
[];
- 對(duì)象的字面量(對(duì)象的key值又是屬性,不用加引號(hào))
var dict = {a:'abc', b:'hh'};
6.標(biāo)識(shí)符
使用標(biāo)識(shí)符來命名
a.由字母、數(shù)字、_和$組成,數(shù)字不能開頭
var s8uu_$;
b.不能關(guān)鍵字
var for
c.大小寫敏感,y和Y不一樣
d.規(guī)范:見名知意
02.變量的聲明
- 在js中可以通過聲明變量來保存數(shù)據(jù)
1.語法 - var 變量名;
- var 變量名 = 初值;
- 說明: var是關(guān)鍵字;
- 變量名:標(biāo)識(shí)符,不能隨意使用_或者$開頭;駝峰式命名規(guī)則(第一個(gè)單詞首字母小寫,后面每個(gè)單詞的首字母大寫)
//聲明變量
var userName;
//給變量賦值
userName = 'Wang';
console.log(userName)
var score = 100
console.log(score)
//同時(shí)聲明多個(gè)變量
var name, age, sex;
var name1='abc', age1 = 18, sex;
//一個(gè)變量可以存儲(chǔ)任意類型的值;聲明變量的時(shí)候,變量沒有賦值,默認(rèn)是undefined
var a = 'abc'
a = 100
a = score

03.運(yùn)算符
1.數(shù)學(xué)運(yùn)算符:+, -, *, /, %, ++, --
- a._,-,*, %和數(shù)學(xué)中的求和、求差以及求乘積,取余是一樣的
var a = 10+20;
var b = 20 - 10;
var c = 10*20;
var d = 7 % 2
- b./ 和數(shù)學(xué)中的除一樣
var e = 5/2
console.log(e)

- c.++,--(單目運(yùn)算符)
語法: 變量++/變量-- ; ++變量/--變量
++: 自加一
--:自減一
var a1 = 10
var b1 = 10
a1++
++b1
console.log(a1,b1)
a1--
--b1
console.log(a1, b1)
var c1 = a1++ // ++/--寫到后面的時(shí)候,先賦值,再自加/自減
var c2 = ++b1 // ++/--寫到前面的時(shí)候,先自加/自減,再賦值
console.log(c1, c2)

2.比較運(yùn)算符: >,<,==(相等),!=, >=,<=, ===(完全相等), !==,>==, <==
結(jié)果都是布爾值
console.log(10 > 20) // false
console.log(10<20)
//==:判斷值是否相等
console.log(5==5) //true
console.log(5=='5') //true
//===:判斷值和類型是否相等
console.log(5===5) //true
console.log(5==='5') //false
console.log(5!=5, '5'!=5) //false,false
console.log(5!==5, '5'!==5) //false,true

3.邏輯運(yùn)算符:&&(與), ||(或), !(非)
console.log('與:',true && true, true && false)
console.log('或',true || false, false || false)
console.log('非',!true, !false)

4.賦值運(yùn)算符: =, +=, -= , *=, /=, %=
- 賦值運(yùn)算符的左邊必須是變量
- 和python的語法一樣
var a = 100;
a += 10 // a = a+10
a -= 10
a *= 10
a /= 10
a %= 10
console.log(a)
**5.三目運(yùn)算符 **
- a.格式:
- 條件語句 ?值1 : 值2;
- b.結(jié)果:
- 判斷條件語句的結(jié)果是否是true,如果是true,那么表達(dá)式的結(jié)果就是值1,否則是值2
var b = true ? 10:20;
console.log(b)
//求兩個(gè)數(shù)之間的最大值
var a1 = 80
var a2 = 100
console.log(a1 > a2 ? a1:a2)

6.運(yùn)算符的優(yōu)先級(jí)和python基本一樣??梢酝ㄟ^括號(hào)來改變運(yùn)算順序
04.分之結(jié)構(gòu)
js中的分之結(jié)構(gòu)有兩種:if語句,switch語句
1.if語句
- a.if(條件語句){滿足條件要執(zhí)行的代碼塊}
var age = 18
if(age>=18){
console.log('成年')
}
- b.if(條件){語句塊1}else{語句塊2}
if(age>=18){
console.log('成年')
}else{
console.log('未成年')
}
- c.if - else if - else(相當(dāng)于python中的if-elif-else)
if(age<18){
Console.log('未成年')
}else if(age<40){
console.log('青年')
}else{
console.log('老年')
}
2.switch語句
switch(變量){
case 值1:
語句1;
break;
case 值2:
語句2;
break;
...
default:
語句3;
break;
}
執(zhí)行過程:使用變量的值依次和后邊每個(gè)case后面的值進(jìn)行判斷,看是否相等(是否完全相等)。
如果相等就執(zhí)行那個(gè)case后面對(duì)應(yīng)的語句。如果前面每個(gè)case后面的值都和變量的值不相等,就執(zhí)行default后邊的語句
var score = 10;
switch(score){
case 1:
console.log('F');
break;
case 10:
console.log('A+')
break;
case 9:
console.log('A');
break;
default:
console.log('其他');
break;
}
console.log('======')
10分制分?jǐn)?shù):0-5:不及格,6-7:及格 8-9:良好 10:優(yōu)秀
score = 9
switch(score){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
console.log('不及格');
break;
case 6:
case 7:
console.log('及格');
break;
case 8:
case 9:
console.log('良好');
break; // switch中的break,可以讓switch直接結(jié)束
case 10:
console.log('優(yōu)秀');
break;
}
0-6表示星期1到星期日
var week = 0;
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('周日');
break;
default:
console.log('其他情況')
}

05.循環(huán)結(jié)構(gòu)
js中的循環(huán)分為for循環(huán)和while循環(huán)
1.for循環(huán)
- a.for- in (和python中的for循環(huán)一樣)
- for(變量 in 數(shù)組/對(duì)象){函數(shù)體}
var arr1 = [1, 2, 'abc']
//x取的是下標(biāo)
for(var x in arr1){
console.log(arr1[x])
}
var obj1 = {name:'張三', age:30}
//key拿到的是屬性名
for(var key in obj1){
console.log(key, obj1[key])
}
var str1 = 'abcdef'
for(var x in str1){
console.log(x, str1[x])
}

- b.for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}
執(zhí)行過程: - 先執(zhí)行表達(dá)式1,然后再判斷表達(dá)式2的結(jié)果是否是true,如果是true就執(zhí)行循環(huán)體;執(zhí)行完循環(huán)體,再執(zhí)行表達(dá)式3;
- 執(zhí)行完表達(dá)式3,再判斷表達(dá)式2的結(jié)果是否是true,如果是true又執(zhí)行循環(huán)體;執(zhí)行完循環(huán)體,再執(zhí)行表達(dá)式3;依次類推,
- 直到表達(dá)式2的結(jié)果是false,循環(huán)就結(jié)束
//計(jì)算1+2+3+...+100
var sum = 0
for (var i = 1; i < 101 ; i++) {
// console.log(i)
sum += i
}
console.log(sum)
var sum1 = 0
var i = 0
for (; i < 101; ) {
sum1 += i
// i++;
i += 1
}
console.log(sum1)

2.while循環(huán)
- a.while(條件語句){循環(huán)體} -- 和python一樣
var sum2 = 0
var i = 1
while(i <= 100){
sum2 += i;
i++;
}
console.log(sum2)
- b.do-while循環(huán): do{循環(huán)體}while(條件語句);
執(zhí)行過程,先執(zhí)行循環(huán)體,然后判斷條件是否成立。如果成立再執(zhí)行循環(huán)體。。。
依次類推,直到條件不成立,循環(huán)結(jié)束
var sum2 = 0
var i = 1
do{
sum2 += i;
i ++;
}while(i <= 100);
console.log(sum2)

3.break和continue(和python一樣)
06.函數(shù)
1.函數(shù)的聲明
- function 函數(shù)名(參數(shù)列表){函數(shù)體}
- a.function - 關(guān)鍵字
- b.函數(shù)名 - 駝峰式;見名知義
- c.參數(shù):參數(shù)可以有默認(rèn)值,有默認(rèn)值的參數(shù)要寫在后面。調(diào)用函數(shù)傳參的時(shí)候,是按實(shí)參的位置來傳參。保證每個(gè)參數(shù)都有值
- d.函數(shù)體: 實(shí)現(xiàn)函數(shù)的功能。只有在調(diào)用的時(shí)候才執(zhí)行
unction sum1(num2, num1=1){
console.log('求兩個(gè)數(shù)的和')
return num1 + num2
}
console.log(sum1(10,20))
console.log(sum1(10))

//函數(shù)沒有return的時(shí)候,函數(shù)的返回值是undefined
function func1(){
console.log('我是函數(shù)1')
}
console.log(func1())

2.函數(shù)的調(diào)用
- 函數(shù)名(實(shí)參列表)
- 調(diào)用過程和python一樣
3.作用域
- 全局變量:聲明在函數(shù)外面的變量(從變量聲明到文件結(jié)束)
- 局部變量:聲明在函數(shù)里面的變量 (從變量聲明到函數(shù)結(jié)束;函數(shù)的參數(shù)也是局部變量)
//aaa就是全局變量
var aaa = 10
function func2(){
//bbb就是局部變量
var bbb = 100
console.log(bbb, aaa)
//函數(shù)中可以修改全局變量的值
aaa = 200
//函數(shù)中可以聲明函數(shù)
function func22(){
bbb = 1.1
console.log(bbb)
}
}
func2()
//console.log(bbb)
console.log(aaa)
//可以將函數(shù)作為變量
var a = func2
a()
//個(gè)數(shù)不定參數(shù),js不支持

07.數(shù)據(jù)類型
- 數(shù)字、字符串、布爾、列表、對(duì)象
1.數(shù)字:包含整數(shù)和小數(shù)(支持科學(xué)計(jì)數(shù)法)
var num1 = 10
var num2 = new Number()
console.log(num2+10)

2.字符串
- a.' '和" "括起來的字符集
- b.轉(zhuǎn)義字符(和python一樣)
- c.字符編碼是unicode編碼
var str1 = 'abc'
var str2 = "abc"
var str3 = '\n'
var str4 = '\\'
- e.獲取字符串長度: 字符串.length
console.log(str1.length)

- f.獲取單個(gè)字符:字符串[下標(biāo)]
下標(biāo):1.范圍是0 ~ 長度-1 2.如果越界,不報(bào)錯(cuò),但是結(jié)果是undefined
js中的字符串不能切片
console.log(str1[0])

- g.運(yùn)算符
js中字符串只支持+,不支持*
字符串1 + 字符串2 -- 拼接兩個(gè)字符串
js中字符串可以和其他任何數(shù)據(jù)進(jìn)行加操作,其效果都是字符串連接(會(huì)將其他數(shù)據(jù)轉(zhuǎn)換成字符串)
console.log('123'+'abc', 'abc'+100)

- h.字符串相關(guān)方法(查)
var strstr = 'abc123'
var re = strstr.replace(/\d+/i,'ooo')
console.log(re)

3.對(duì)象,構(gòu)造方法(類)
var obj1 = {name:'Zzk', age:18}
console.log(obj1.name, obj1['name'])
//聲明構(gòu)造方法
function Person(name='', age=0, sex=''){
this.name = name
this.age = age
this.sex = sex
}
var p1 = new Person()
p1.name = 'mmm'
p1.age = 20
console.log(p1, typeof(p1))
