<!DOCTYPE html>
<html>
<head>
<title>JS基礎(chǔ)</title>
<!-- 2.內(nèi)部 -->
<script type="text/javascript">
// 在這兒寫js代碼
// alert('你好嗎') //彈出一個提示框
</script>
<!-- 3.外部 -->
<!-- 通過script標簽的src屬性來導入對應(yīng)的js文件 -->
<script type="text/javascript" src="04-分之結(jié)構(gòu).js"></script>
</head>
<body>
<p id="p1">你好</p>
<p id="p2">hello</p>
<!-- 1.內(nèi)聯(lián) -->
<!-- onclick屬性后寫js代碼 -->
<button onclick="document.getElementById('p1').innerHTML='Hello JS'">點我一下</button>
<script type="text/javascript">
// 在這兒寫js代碼
// alert('你好嗎') //彈出一個提示框
document.write('hi');
document.getElementById('p2').innerHTML='我最棒';
</script>
</body>
</html>
// 1.語句
// a.js語法上山卦,一條語句結(jié)束可以寫分號也可以不寫分號墅茉;但是根據(jù)習慣需要在每條的語句的后面添加分號场刑。
// 如果一行要寫多條語句,那么每條語句之間必須寫分號!
// b.js中沒有縮進的規(guī)范担映,但是在實際開發(fā)的時候還是要按照python的要求去規(guī)劃縮進
// 2.注釋
// a. 單行注釋就是'//注釋內(nèi)容'
// b. 多行注釋:'/注釋內(nèi)容/'
// 3.標識符:用來給變量和函數(shù)命名的....
// a.由字母數(shù)字和下劃線以及美元符號(不開頭
// d.見名知義
// 4.字面量(具體的值)
// a.數(shù)字:12, 12.3, 12e2
// b.字符串:'abc12' "231hj"
// c.數(shù)組:[1,2,3,4,'a','b']
// d.對象:{'a':1, 'c':32}
// e.布爾:true,false
// f.特殊值:null, undefined
// 1.變量:用來存儲數(shù)據(jù)
/*
a.變量的聲明:
格式: var 變量名; 或者 var 變量名 = 初值
var: js中聲明變量的關(guān)鍵字
變量名: 標識符术幔,駝峰式命名(除了第一個單詞首字母小寫另萤,其他單詞的首字母大寫,例如:userName,peopleNumber)
初值: 字面量(表達式)
說明:js中聲明變量的時候不用聲明變量的類型。同一個變量可以存儲不同類型的值
*/
// 聲明變量:就是在內(nèi)存中開辟空間存儲數(shù)據(jù);
// 變量賦值的時候:數(shù)字四敞、字符串和布爾數(shù)據(jù)存的是值泛源。數(shù)組和對象存的是地址
// 1.聲明的時候可以給變量賦值,也可以不賦值
// 聲明一個變量 num
var num = 20;
// 給num變量賦值
num = 10;
num = 'abc';
// 在控制臺打印num的值(console.log相當于python的print)
console.log(num);
// 2.同時聲明多個變量
var num1, num2 = true, num3;
console.log(num2);
var arr = [1, 2, 3, 4]
console.log(arr)
// 2.基本數(shù)據(jù)類型
// typeof 表達式; 查看表達式結(jié)果的數(shù)據(jù)類型
/*
JS中的基本數(shù)據(jù)類型有: Number(數(shù)字)忿危、String(字符串)达箍、Boolean(布爾)、Array(數(shù)組)铺厨、Object(對象)缎玫、null(清空變量的內(nèi)容)、undefined(定義的變量沒有賦值)
Number:a.包含所有的數(shù)字(整數(shù)解滓、浮點數(shù)赃磨、科學計數(shù), NaN->不合法的數(shù)字) -- 數(shù)字類型只有一種,值類型
b.Number() --> 可括號中的數(shù)據(jù)轉(zhuǎn)換成Number類型洼裤。
將字符串轉(zhuǎn)換成數(shù)字的時候邻辉,只有去掉字符串的引號后剩下的部分是一個數(shù)字的字符串才能轉(zhuǎn)換成合法數(shù)字,否則結(jié)果是NaN
布爾true會轉(zhuǎn)換成1腮鞍,false轉(zhuǎn)換成0
*/
var num1 = 10
console.log(typeof num1)
var num2 = 2e3
num2 = Number(true)
console.log(num2)
// ================================
/*
String: ---> 值類型
a.可以使用單引號或者雙引號引起來的字符集值骇,就是字符串數(shù)據(jù):'abc',"12gh"....
b.JS中也可以使用轉(zhuǎn)義字符來表示有特殊功能和特殊意義的字符: \ ,' 移国," 吱瘩, \t ,\n等
c.JS字符也是Unicode字符
d.通過下標獲取某個字符:下標范圍是0~字符串長度-1.
注意:js中下標不能是負數(shù);也不可以切片
e.通過 new String()去創(chuàng)建一個Object類型的字符串迹缀。
*/
var str1 = 'a"bc';
var str2 = "abc"d21";
var str3 = 'a'bc';
var str4 = 'abc\nhujn';
console.log(str4);
// 通過下標獲取字符
console.log(str4[0]);
// 獲取字符串的長度
console.log(str4.length);
// 創(chuàng)建一個對象類型的字符串123abc
var str5 = new String('123abc');
console.log(str1.charAt(0), typeof str1);
console.log(str5.charAt(0), typeof str5);
// ================================================
// Boolean: true使碾,false
// 1.數(shù)字轉(zhuǎn)換成Boolean值,0和NaN會轉(zhuǎn)換成false,其他數(shù)字會轉(zhuǎn)換成true
// 2.字符串轉(zhuǎn)換成Boolean值祝懂,空串是false,其他的都會轉(zhuǎn)換成true
// 3.null,undefined都會轉(zhuǎn)換成false
var b1 = Boolean(undefined)
console.log(b1)
// ================================================
// Array: 數(shù)組類型就是python中的列表
// 1.存數(shù)組數(shù)據(jù)存的是地址
// 2.數(shù)組的元素可以是任何類型的數(shù)據(jù)部逮,可以通過下標去獲取對應(yīng)的元素
// 3.下標的范圍:0~長度-1
// 4.通過length可以獲取數(shù)組元素的個數(shù)
var a1 = [1,2,3,'acd',true];
console.log(a1);
console.log(a1[2]);
console.log(a1.length);
// 添加元素
// push:在數(shù)組的最后添加一個或者多個元素,返回最新的數(shù)組的長度
a1.push(10);
count = a1.push('a','abab');
console.log(a1, count);
// 刪除元素
// pop:將數(shù)組中的最后一個元素刪除嫂易,并且返回被刪除的元素
del = a1.pop();
console.log(a1, del);
// 切片
// slice(起始下標,結(jié)束下標):從數(shù)組的起始下標開始,到結(jié)束下標前的所有元素掐禁,作為一個新的數(shù)組的元素并且返回
newArray = a1.slice(0,3);
console.log(newArray);
// 刪除指定下標的元素
// splice(下標怜械,個數(shù)): 從指定下標開始刪除指定個數(shù)元素
var a2 = [1,2,3,4,5];
a2.splice(1,2);
console.log(a2);
// 在指定位置添加元素
// splice(下標,0,元素1,元素2,元素3...):在指定的下標前插入指定的一個或者多個元素
var a3 = [1,2,3,4,5];
a3.splice(2,0,'a','b');
console.log(a3);
// 在數(shù)組的開頭添加一個或者多個元素
a3.unshift('a','b');
console.log(a3);
// 修改元素
a2[0] = 100;
console.log(a2);
// ========================對象========================
// Object: 對象類型就是python中的字典
// 變量存儲對象,存的是對象的地址
// 存的時候以鍵值對的形式去存儲數(shù)據(jù)傅事,這個鍵可以看成對象的屬性
// 創(chuàng)建了一個變量缕允,存的是一個對象的地址
var obj1 = {'a':1, 'b':2, 'c':'abc'};
// 取值: 通過key去取值
console.log(obj1['a']);
// 取值:通過點語法獲取屬性的值
console.log(obj1.c);
// 修改
obj1['a'] = 100;
obj1.c = '你好';
console.log(obj1);
// 增加: 給不存在的key或者屬性去賦值
obj1['d'] = 1001;
console.log(obj1);
obj1.e = 'aaaa';
console.log(obj1);
// 刪除指定的鍵值對/屬性
delete obj1.b;
delete obj1['a'];
console.log(obj1);
// 聲明對象的時候,屬性名可以不用加引號
var obj2 = {name:'yuting', age:18, sex:'女'};
console.log(obj2['name']);
console.log(obj2.name);
// 算術(shù)運算符蹭越、比較運算符障本、邏輯運算符、賦值運算符
// 1.算術(shù)運算符(+,-,,/, %, ++, --)
// +,-驾霜,案训,/,%和python中的是一樣的
// a. 任何數(shù)據(jù)和字符串相加,結(jié)果都是字符串拼接的操作
var str1 = 'aaa'+[1,2,3,4];
console.log(str1);
// b.兩個數(shù)組相加粪糙,并不是數(shù)組元素的拼接强霎。而是將數(shù)組轉(zhuǎn)換成字符串,然后拼接成一個新的字符串
var arr1 = [1,2,3] + [4,5,6];
console.log([1,2,3])
console.log(arr1);
// c.操作只能作用于兩個數(shù)字類型
var str2 = 'abc'2;
console.log(str2);
// e.++:自加1操作
var num1 = 10;
var num11 = 10;
num1++; //相當于: num1 += 1, num1 = num1+1
++num11
console.log(num1, num11);
// f.--:自減1操作
var num2 = 10;
num2--;
console.log(num2);
// 坑
var num3 = 10;
var num33 = 10
var num4 = num3++; // var num4 = num3; num3 += 1;
var num5 = ++num33; // num33 += 1; var num5 = num33;
console.log(num4, num5);
// 2.比較運算符:>, <, >=, <=, == , !=, ===, !==
// ==和===的區(qū)別:
// ==是只要兩個數(shù)據(jù)的值相等蓉冈,結(jié)果就是true,否則是false
// ===是只有兩個數(shù)據(jù)的值相等城舞,并且數(shù)據(jù)類型也相等的時候,結(jié)果才是true寞酿,否則是false
console.log(5==5) //true
console.log(5=='5') //true
console.log(5===5) //true
console.log(5==='5') //false
console.log(5!=5) //false
console.log(5!='5') //false
console.log(5!==5) //false
console.log(5!=='5') //true
console.log(5 >='5') //判斷等的是判斷值是否相等
console.log(12 > '16') //字符串和數(shù)字之間比較大小家夺,會把字符串轉(zhuǎn)換成數(shù)字
// 注意:比較大小的時候,一般數(shù)字就和數(shù)字進行比較伐弹;字符串和字符串進行比較
// 3.邏輯運算符:&&(與)拉馋,||(或),!(非)
console.log(true && true,true && false,false && false); //true false false
console.log(true || true,true || false,false || false); //true, true, false
console.log(!true, !false); //false, true
// 4.賦值運算符: =, +=, -=, =掸茅, /=, %=
// 注意:賦值符號的左邊是變量
// js中的分之結(jié)構(gòu)有:if語句和switch語句兩種
/
1.if語句
python:
if 條件:
語句塊1
elif 條件:
語句塊2
else:
語句塊3
js:
if(條件){
語句塊1
}
else if(條件){
語句塊2
}
else{
語句塊3
}
*/
// 寫一個程序判斷成績的等級:80-100優(yōu)秀椅邓,60-80:中等,60以下:不及格
// 不能連續(xù)判斷:x<=a<=y 只能寫成:a>=x && a<=y
var score = -55
if (score>=80 && score<=100) {
console.log('優(yōu)秀');
}else if(score>=60 && score<80){
console.log('中等');
}else if (score>=0 && score<60) {
console.log('不及格')
}else{
console.log('error');
}
// 2.switch語句
/*
switch(表達式){
case 值1:
語句塊1;
case 值2:
語句塊2;
...
defult:
語句塊3;
}
執(zhí)行過程: a.從第一個case語句后的值開始和表達式的值進行判斷昧狮,
如果相等景馁,那么就將那個case作為入口,依次執(zhí)行后面所有的語句塊直到遇到break或者全部執(zhí)行完為止逗鸣。
b.如果所有的case后面的值合住,都和表達式的值不相等,那么就會去執(zhí)行default后面的語句塊撒璧。
c.case后面的值不能一樣
*/
var a = 100;
switch(a){
case 10:
console.log('10');
case 1:
console.log('1');
case 2:
console.log('2');
break;
case 11:
console.log('11');
case 12:
console.log('12');
default:
console.log('13');
}
// 輸入一個數(shù)字(1-7),根據(jù)數(shù)據(jù)打印結(jié)構(gòu)為(周一~周天)
var num1 = 4
switch(num1){
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;
case 7:
console.log('周天');
break;
default:
console.log('錯誤');
}
// 要求透葛,num2的值是1,2卿樱,3僚害,4,5的時候打印’不及格‘繁调,6萨蚕,7,8打印中等蹄胰,9岳遥,10打印優(yōu)秀。
var num2 = 4;
switch (num2){
case 1:
case 2:
case 3:
case 4:
case 5:
console.log('不及格');
break;
case 6:
case 7:
case 8:
console.log('中等');
break;
case 9:
case 10:
console.log('優(yōu)秀');
break;
default:
console.log('成績有誤');
break;
}