什么是JS
js是javaScript的縮寫,是一門腳本語(yǔ)言。專門用來(lái)負(fù)責(zé)網(wǎng)頁(yè)上的行為(可以直接寫到網(wǎng)頁(yè)中)
在哪兒寫js代碼
a.可以寫在script標(biāo)簽中(理論上script標(biāo)簽可以放到html文件中的任何位置)
b.寫到標(biāo)簽的事情屬性中(例如:onclick)
c.寫到外部的js文件中(.js)js在網(wǎng)頁(yè)中能做什么事情
a.在網(wǎng)頁(yè)的不同的位置插入html代碼
b.修改某個(gè)標(biāo)簽的內(nèi)容
c.修改標(biāo)簽的樣式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--導(dǎo)入外部的js文件-->
<script src="js/06-函數(shù).js">
</script>
<!--一個(gè)html中可以在多個(gè)位置插入script標(biāo)簽-->
<script type="text/javascript">
//在
function insertP(){
document.write('<p>python</p>')
}
</script>
</head>
<body>
<h1 id="ss">千峰的所有學(xué)科</h1>
<button onclick="window.alert('按鈕被點(diǎn)擊')"></button>
<button onclick="document.getElementById('ss').style.color = 'yellow'">修改顏色</button>
<!--修改標(biāo)簽內(nèi)容-->
<button onclick="document.getElementById('ss').innerHTML='千峰所有的老師'">修改內(nèi)容</button>
<script type="text/javascript">
for (var i=0; i<10; i++) {
document.write('<p>薩達(dá)</p>')
}
</script>
</body>
</html>
JS基礎(chǔ)語(yǔ)法
js中的注釋
//這是單行注釋
/*
這是多行注釋
*/語(yǔ)句
一條語(yǔ)句結(jié)束需要加分號(hào)(現(xiàn)在的js版本也可以不用寫)
一行寫多條語(yǔ)句必須使用分號(hào)隔開(kāi)js沒(méi)有縮進(jìn)問(wèn)題,用{}表示一個(gè)塊
基本數(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 javsscript');
console.log('你好,python');
- 字面量
- 數(shù)字字面量
89;
1.2;
3e8; - 字符串字面量
'abc';
"abc"; - 布爾字面量
true;
false; - 數(shù)組字面量
[1,1,'asd',12,3,3,54,654,,654,5];
[]; - 對(duì)象字面量(對(duì)象的key值又是屬性,不用加引號(hào))
var dict= {a:"asd",asd:"sss"};
console.log(dict['a'], dict.b)
- 標(biāo)識(shí)符
使用標(biāo)識(shí)符來(lái)命名
- a.由字母、數(shù)字、_和$組成,數(shù)字不能開(kāi)頭
var s8uu_$; - b.不能關(guān)鍵字
var for - c.大小寫敏感,y和Y不一樣
- d.規(guī)范:1.見(jiàn)名知義
變量的聲明
- js中可以通過(guò)聲明變量來(lái)保存數(shù)據(jù)
- 語(yǔ)法
var 變量名
var 變量名 = 初值
說(shuō)明: var是關(guān)鍵字;
變量名:標(biāo)識(shí)符,不能隨意使用_或者$開(kāi)頭;駝峰式命名規(guī)則(第一個(gè)單詞首字母小寫,后面每個(gè)單詞的首字母大寫)
var userName;
userName = 'w阿薩德';
console.log(userName);
var score = 100;
console.log(score);
//同時(shí)聲明多個(gè)變量名
var nam = '誰(shuí)說(shuō)的', age = 45, sex = 'woman';
console.log(nam)
//一個(gè)變量可以存儲(chǔ)任意類型的值;聲明變量的時(shí)候,變量沒(méi)有賦值,默認(rèn)是undefined
var a = 'abac';
a = 100
運(yùn)算符
- 數(shù)學(xué)運(yùn)算符:+,-,*,/,%,++,--
- 比較運(yùn)算符:>,<,==,!=,>=,<=, ===,!==,<==,>==
-符號(hào)‘==’即使是變量里面的內(nèi)容與之相等,也就是說(shuō)與類型無(wú)關(guān)
-符號(hào)‘===’要讓內(nèi)容以及類型相等 - 邏輯運(yùn)算符:&&(與),||(或),?。ǚ牵?/li>
- 賦值運(yùn)算符: =, +=, -=, *=, /=,%=
- 三目運(yùn)算符 :條件語(yǔ)句 ? 值1 : 值2
判斷條件語(yǔ)句的結(jié)果是否是true,如果是true,那么表達(dá)式的結(jié)果就是值1,否則是值2
分之結(jié)構(gòu)
- js中的分之結(jié)構(gòu)有兩種:if語(yǔ)句,switch語(yǔ)句
- if語(yǔ)句
- a.if(條件語(yǔ)句){滿足條件要執(zhí)行的代碼塊}
var age = 18
if(age>=18){
console.log('成年')
}
- b. if(條件){語(yǔ)句塊1}else{語(yǔ)句塊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('老年')
}
- switch語(yǔ)句
switch(變量){
case值1:
語(yǔ)句1;
break
case值2:
語(yǔ)句2;
break
case值3:
語(yǔ)句3;
break
...
default:
語(yǔ)句4;
break
}
執(zhí)行過(guò)程:使用變量的值一次和后邊每個(gè)case后面的值進(jìn)行判斷,看是否相等。
如果相等就執(zhí)行那個(gè)case后面對(duì)應(yīng)的語(yǔ)句,如果前面每個(gè)case后面的值都和變量的值不相等,就執(zhí)行default后邊的語(yǔ)句
var score = 10;
switch(score){
case 1:
console.log('F')
break;
case 10:
console.log('D')
break
case 4:
console.log('A+')
break
default:
console.log('其他')
break;
}
console.log('====')
練習(xí):10分制分?jǐn)?shù):0-5:不及格,6-7及格,8-9:良好 10:優(yōu)秀
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;
case 10:
console.log('優(yōu)秀');
break;
}
循環(huán)結(jié)構(gòu)
- js中的循環(huán)分為for循環(huán)和while循環(huán)
- for循環(huán)
- a.for- in (和python中的for循環(huán)效果一樣)
var ss = [1,2,'asd']
var x
for (x in ss){
console.log(ss[x])
}
var obj1 = {name:'張三', age:30}
for (var key in obj1){
console.log(key, obj1[key])
}
- b.for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}
執(zhí)行過(guò)程:先執(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;一次
var sum1 = 0
var i
for(i=1;i<101;i++){
sum1 += i
}
console.log(sum1)
- while循環(huán)
- a.while(條件語(yǔ)句){循環(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(條件語(yǔ)句);
執(zhí)行過(guò)程,先執(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)
- break和continue(和python一樣)
break:直接跳出循環(huán)體
continue:直接進(jìn)行下一次循環(huán)
函數(shù)
- 函數(shù)的聲明
function 函數(shù)名(參數(shù)列表){函數(shù)體}
function - 關(guān)鍵字
函數(shù)名 - 駝峰式:見(jiàn)名知義
參數(shù):阿薩德
function sum1(num2, num1){ //由于版本原因在設(shè)置參數(shù)時(shí)最好不賦初值,會(huì)報(bào)錯(cuò)
console.log('求兩個(gè)書的和')
return num1 + num2
}
console.log(sum1(10,20))
//console.log(sum1(20))
//函數(shù)沒(méi)有return的時(shí)候,函數(shù)的返回值是undefined
function func1(){
console.log('我是函數(shù)1')
}
console.log(func1())
函數(shù)的調(diào)用
函數(shù)名(實(shí)參列表)
調(diào)用過(guò)程和python一樣作用域
全局變量:聲明在函數(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(aaa)
//可以將函數(shù)作為變量
var a = func2
a()
//個(gè)數(shù)不定參數(shù),js不支持
數(shù)據(jù)類型
- 數(shù)字、字符串、布爾、列表、對(duì)象
- 數(shù)字:包含整數(shù)和小數(shù)(支持科學(xué)計(jì)數(shù)法)
var num1 = 10
var num2 = new Number()
console.log(num2+10)
- 字符串
- a.''和""括起來(lái)的字符集
- b.轉(zhuǎn)義字符(和python一樣)
- c.字符編碼是Unicode編碼
var str1 = 'abc'
var str2 = "aasc"
var str3 = '\n'
var str4 = '\\'
e.獲取字符串的長(zhǎng)度:字符串.length
console.log(str1.length)f.獲取單個(gè)字符:字符串[下標(biāo)]
下標(biāo):1.范圍是0~長(zhǎng)度-1
- 如果越界,不報(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', 100+'sss')
- h.字符串相關(guān)方法(查)
var str23 = 'asd456'
var re = str23.replace(/\d+/,'fff')
console.log(re)
- 對(duì)象, 構(gòu)造方法(類)
var obj1 = {name:'asd', asd:88}
console.log(obj1['name'], obj1.name)
function Person(){
this.name = 'abc'
this.age = 18
this.sex = '女'
}
var p1 = new Person()
p1.name = 'mmm'
p1.age = 20
console.log(p1,typeof(p1))