寫在前面:
前兩天微信發(fā)布了應(yīng)用號瞬間刷爆了朋友圈,按照騰訊的野心這可是要整合移動端市場啊!雖然很多大牛表示不看好,但是,技術(shù)嗅覺卻一定會讓他們了解學(xué)習(xí)這東西,雖然可能僅僅為了不掉隊。另外前端的這些知識也會被用在我們平時的app開發(fā)中,大廠們都已經(jīng)走在了前頭。所以前端的技術(shù)知識我也必須自行普及了。
初識javaScript
javaScript是由Brendan Eich在兩周內(nèi)寫出來的一個可以在靜態(tài)HTML頁面上添加一些動態(tài)效果的語言。ECMAScript是國際標(biāo)準(zhǔn)。
1.javaScript可以放在web的任何地方,不過我們通常把他放在<head></head>標(biāo)簽內(nèi)
2.也可以生成.js文件,在html中通過<script src="...js"><script/>標(biāo)簽添加。
javaScript基本語法(筆記)
- 由于js的結(jié)束語句標(biāo)識符為
;但是就是并不強制要求咱們必須添加,但不添加可能會出現(xiàn)某些歧義(如return),所以一般寫語句帶上;。 - js不注聲明數(shù)據(jù)類型,而是通過后面的賦值表示其類型。通常通過
var來聲明局部變量。如果沒有var則表示為全局變量 - 數(shù)據(jù)類型:
- 數(shù)值Number:
js中不分浮點數(shù)和整數(shù),所有java中的數(shù)值基本數(shù)值類型直接可用Number表示
1//整數(shù)
2.31//浮點數(shù)
123.456e3//科學(xué)計數(shù)法
NAN// NaN表示Not a Number,當(dāng)無法計算結(jié)果時用NaN表示
-23//負(fù)數(shù)```
2. 字符串
js中字符串可以直接用單引號''或者雙引號""括起。
'小敏'
"小敏"
"I'm a word!"http://'此處表示一個字符
'I'm "ok"!'//同過轉(zhuǎn)義字符\即可將''與""同時在字符串中表示
多行字符串直接換行即可如
'
hello
my student
'
字符串可通過length返回長度
字符串是不可變的,但是可以通過方法改變其表現(xiàn)形式
toUpperCase()//變成大寫字母
toLowerCase()//變?yōu)樾懽帜?br>
indexOf()//索引
substring()//截取字符串,可指定開始位置和結(jié)束位置,不指定則為全部```
- 數(shù)組
var arr = [1,2.13,true,null,'hello']//數(shù)組元素可以是任何類型
數(shù)組可以通過length返回數(shù)組長度(但如給arr.length賦予一新值,則會改變數(shù)組數(shù)據(jù))。
數(shù)組可以通過索引直接付新值(arr[1] = 2,但如果索引大于數(shù)組長度會引起數(shù)組長度變化)。
數(shù)組可以通過indexOf()方法進行查找數(shù)組元素位置
slice()可以截取數(shù)組中的部分或全部元素并且返回一個新數(shù)組
push()和pop()在數(shù)組末尾添加或刪除數(shù)據(jù)
unshift()和shift()在數(shù)組起始處添加或刪除數(shù)據(jù)
sort()給數(shù)組排序
reverse()表示翻轉(zhuǎn)數(shù)組
splice()
修改數(shù)組的方法arr.splice(2,3,'JAVA','C#')表示在第二位起刪除3個數(shù)據(jù)后添加兩個數(shù)據(jù)
join()給數(shù)組添加鏈接符```
4. 對象
js中的對象是一種無序的集合類型,通過鍵值對表示其key和value,鍵值對通過:號連接,不同的鍵值對則通過,分隔.
可以通過變量名稱.key直接訪問value值,如果key包含特殊字符則需變量名['XXX']訪問。eg(tom['old_Name'])
如果訪問一個不存在的的鍵值對,不會報錯只會返回undefined
如果添加,我們可以直接利用變量名添加(a.name = 'Tom')
如果刪除,我們可以直接利用delete刪除
如果查詢是否存在,利用in('age' in a)返回布爾值,但注意in查詢的不一定在該對象內(nèi),也可能是繼承來的。
如果只想查詢該對象含有的屬性,可以使用hasOwnPorperty();```
- 循環(huán)
包括while(){},for(;;){},do{}while();三種循環(huán)。用法簡單。
for.....in
var a = ['1','2',3,true];
for(var b in a){
alert(b);//結(jié)果為0,1,2,3,證明輸出的是它的下標(biāo)
}
for(var c of a){
alert(c);//結(jié)果為1,2,3,true;證明結(jié)果為其值
}
- Map和set
Map是利用鍵值對的形式進行存儲的
var map = new Map(['Meachel',20],['Tom',21]);//有參聲明
var map = new Map();//無參聲明
map.set('Tom',21);//添加,修改
map.has('Tom');//查詢
map.get('Tom');//獲取
map.delete('Tom'); //刪除
Map通過key添加value,如果相同key,后面的value會覆蓋前面的value。
Set
var set = new Set([1,2,3,4]);//有參聲明
set.add(5);//添加
set.delete(3);//刪除
Set沒有key,添加相同元素會被覆蓋。數(shù)學(xué)中這也是集合的三大要義之一。
- Iterable
通過forEach(function())(...)是最高效的方法。
Array的function()De參數(shù)為element,index,array
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向當(dāng)前元素的值
// index: 指向當(dāng)前索引
// array: 指向Array對象本身
alert(element);
});
Set的function()的參數(shù)為element,sameElement,set,并且第一第二個都指向元素;
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
alert(element);
});
Map的function()的參數(shù)為value,key,map
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
alert(value);
});```
#####小結(jié):
這些個學(xué)習(xí)筆記我都是在[廖雪峰的個人網(wǎng)站](http://www.liaoxuefeng.com/)上的javaScript教程學(xué)習(xí)整理的,僅作學(xué)習(xí)用途。希望可以直接訪問廖老師的個人網(wǎng)站學(xué)習(xí),打賞。
**如果您發(fā)現(xiàn)本文有所錯漏,麻煩留言交流共同進步**