1 JavaScript 語(yǔ)法
1.1 語(yǔ)句
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div>
<ul>
<li></li>
<li></li>
</ul>
</div>
<script>
//---------------script標(biāo)簽最好放到HTML文檔的最后,</body>標(biāo)簽之前,能使瀏覽器更快的加載頁(yè)面.
</script>
</body>
</html>
1.2 注釋
單行注釋 // ..................
多行注釋 /* .................
..............*/
還可以使用HTML中的注釋 <!------........------>
1.3 變量
使用 var 申明變量 :
var name , age ;
name = "yuxiaohu";
age = 28;
也可以 :
var name="yuxiaohu";
1.4 原始數(shù)據(jù)類型
★ String
字符串類型 var name = "yuxiaohu";
★ Number
數(shù)值類型 var age = 29;
★ Boolean
布爾值 var sleeping = true / false;
★ Null
表示一個(gè)空對(duì)象指針
★ Undefinited
未定義數(shù)據(jù)類型
★ NaN
不是一個(gè)數(shù)字
<可以使用 typeof(name) 判斷數(shù)據(jù)類型.>
1.5 引用數(shù)劇類型
★ 數(shù)組 Array [ ]
var arr=[1,2,3];
arr.length // 獲取數(shù)組的長(zhǎng)度
★ 對(duì)象 Objec { }
var people = {name:"yuxiaohu",year:1990,sex:"man"};
people.sex // 讀取sex屬性的值為 : "man"
內(nèi)建對(duì)象 : js內(nèi)部預(yù)定義的對(duì)象稱為內(nèi)建對(duì)象,如下面幾種常用的內(nèi)建對(duì)象.
Array 對(duì)象
var arr=[1,2,3];
arr.length
Math 對(duì)象
var num = 7.561 ;
var num = Match.round(num) // 結(jié)果 : num = 8
Date 時(shí)間對(duì)象
var tim = new Date();
var today = tim.getDay();
var hours = tim.getHours();
var month = tim.getMonth();
宿主對(duì)象 : 瀏覽器提供的預(yù)定義對(duì)象被稱為宿主對(duì)象 ( host object )
函數(shù) Function yxh ( )
function yxh ( b , c ) {
var a = b * c ;
return(a);
}
yxh(10,20) ; // 200
重點(diǎn) :
1握侧、基本類型 ( Undefined泊窘、Null叶骨、Boolean匹层、Number极谊、String )
這些類型在內(nèi)存中分別占有固定大小的空間六敬,他們的值保存在棧內(nèi)存碘赖,我們通過(guò)按值來(lái)訪問的。
2外构、引用數(shù)據(jù)類型 ( Array [ ] 崖疤、Object { }、Function ( ) )
引用類型典勇,值大小不固定劫哼,棧內(nèi)存中存放地址指向堆內(nèi)存中的對(duì)象。是按引用訪問的割笙。如下圖所示:棧內(nèi)存中存放的只是該對(duì)象的訪問地址权烧,在堆內(nèi)存中為這個(gè)值分配空間。由于這種值的大小不固定伤溉,因此不能把它們保存到棧內(nèi)存中般码。但內(nèi)存地址大小是固定的,因此可以將內(nèi)存地址保存在棧內(nèi)存中乱顾。 這樣板祝,當(dāng)查詢引用類型的變量時(shí), 先從棧中讀取內(nèi)存地址走净, 然后再通過(guò)地址找到堆中的值券时。對(duì)于這種,我們把它叫做按引用訪問伏伯。
詳細(xì)解釋
1.6 運(yùn)算符和表達(dá)式
算術(shù)運(yùn)算:( +,-,*,/,%,++,-- )
關(guān)系運(yùn)算 : (>,<,>=,<=,==,!=) 將兩個(gè)值做比較-->返回值:true / false
關(guān)系運(yùn)算中:默認(rèn)將所有類型轉(zhuǎn)為數(shù)字再比較
特殊情況
A.NaN:NaN不等于橘洞,不大于,不小于任何值(包括自己)
NaN和任何數(shù)據(jù)做!=比較時(shí)说搅,始終返回true
isNaN(n):本意是判斷一個(gè)值是否是NaN
邏輯運(yùn)算:( && || ! ) 將多個(gè)關(guān)系運(yùn)算綜合起來(lái)炸枣,得出最終結(jié)論,返回值:true、false
賦值運(yùn)算:( += -= *= /= %= )
三目運(yùn)算 :
var a = 10;
var b = 11;
var c = (a > b) ? a : b; 結(jié)果 c = 11
判斷 a 與 b 的大小 , 如果 a 大于 b 則 c = a , 否則 c = b;
1.7 數(shù)據(jù)類型的轉(zhuǎn)換
自動(dòng)轉(zhuǎn)換 :
不需要程序員干預(yù)适肠,js自動(dòng)完成的類型轉(zhuǎn)換僅討論算數(shù)計(jì)算中的自動(dòng)轉(zhuǎn)換:
A. 算數(shù)計(jì)算中霍衫,一切數(shù)據(jù)都默認(rèn)轉(zhuǎn)為數(shù)字,再計(jì)算
Boolean類型:true-->1 false-->0
特殊情況:
如果數(shù)據(jù)無(wú)法被轉(zhuǎn)為數(shù)字類型會(huì)被轉(zhuǎn)為NaN
NaN不等于侯养,不大于慕淡,不小于任何值
NaN參與任何算數(shù)運(yùn)算結(jié)果永遠(yuǎn)為NaN
B.在+運(yùn)算中,碰到字符串沸毁,+就變?yōu)樽址唇?另一個(gè)不是字符串的數(shù)據(jù),被自動(dòng)轉(zhuǎn)為字符串
強(qiáng)制轉(zhuǎn)換 :
任意-->字符串:2個(gè)API
x.toString(); x不是undefined或null時(shí)傻寂,才可用
String(x)
任意-->數(shù)字:3個(gè)API
a.非字符串類型轉(zhuǎn)數(shù)字 Number(x) // 相當(dāng)于隱式轉(zhuǎn)換
b. 將字符串轉(zhuǎn)為數(shù)字:2個(gè)API
parseInt(str) : 將字符串里面的數(shù)字轉(zhuǎn)化成整數(shù).
(從第一個(gè)字符開始依次讀取每個(gè)數(shù)字,只要碰上第一個(gè)非數(shù)字字符就停止,
自動(dòng)跳過(guò)開頭的空字符不認(rèn)識(shí)小數(shù)點(diǎn))
何時(shí)使用:將字符串轉(zhuǎn)為整數(shù)時(shí)
var width="20px";
console.log(Number(width)) //NaN
console.log(parseInt(width)) //20
parseFloat(str):用法同parseInt
比較Number()和parseInt()
var b=true;
console.log(Number(b)) //1
console.log(parseInt(String(b))) //NaN
任意類型-->Boolean: Boolean(x)-->相當(dāng)于隱式轉(zhuǎn)換
只有5個(gè)值轉(zhuǎn)為false:
"" , NaN , undefined , null , 0
其余都轉(zhuǎn)為true
1.8 條件語(yǔ)句
條件判斷
var age = 20;
if (age >= 18) { // 如果age >= 18為true息尺,則執(zhí)行if語(yǔ)句塊
alert('成年人');
} else { // 否則執(zhí)行else語(yǔ)句塊
alert('未成年人');
}
多行條件判斷
var age = 3;
if (age >= 18) {
alert('成年人');
} else if (age >= 6) {
alert('少年');
} else {
alert('小孩');
}
switch結(jié)構(gòu)
多個(gè)if...else連在一起使用的時(shí)候,可以轉(zhuǎn)為使用更方便的switch結(jié)構(gòu)疾掰。
var x = 1;
switch (x) {
case 1:
console.log('x 等于1');
break;
case 2:
console.log('x 等于2');
break;
default:
console.log('x 等于其他值');
}
1.9 循環(huán)語(yǔ)句
while(){}
eg:
var a=0;
while(a<=10){
// 只要a<=10為true就一直循環(huán)
console.log(a);
a++;
}
for循環(huán)
eg:
for(var i=0;i<=10;i++){
console.log(i)
}
for...in...
eg:
var o = {name: 'Jack',age: 20,city: 'Beijing'};
for (var key in o) {
alert(key); // 'name', 'age', 'city'
}
重點(diǎn) : 全局變量和局部變量
變量作用域:一個(gè)變量的可用范圍
全局作用域:window
全局變量——放在全局作用域(window)中的變量
可在程序的任何位置訪問全局變量
局部作用域:在函數(shù)調(diào)用時(shí)才創(chuàng)建的作用域
局部變量
1. 參數(shù)變量
2. 在函數(shù)定義中var的變量
***僅在函數(shù)調(diào)用時(shí)搂誉,動(dòng)態(tài)創(chuàng)建
調(diào)用時(shí),如果局部有静檬,就不用全局的炭懊!
***調(diào)用后,隨局部作用域一同銷毀