第二章:小結
- 在使用JavaScript外部腳步時,src屬性可以鏈接到外部文件,也可以鏈接到外部域的文件。
<javascript src="路徑" type="text/javascript"></javascript>
- 元素會按照默認的方式進行,前提是不使用defer和async屬性情況下,
defer=”defer”屬性將延遲到瀏覽器遇到之后才會執行,但是支持html5標準的瀏覽器中,會忽略這個屬性,所以把延遲腳本放在頁面底部是最佳選擇。
async src=”example.js” 屬性目的是為了不讓頁面等待腳本下載,而異步加載頁面的其他內容,該屬性腳本一定會在頁面的load事件前執行。
一般應該把元素放在前面,目的是為了先加載頁面,在執行腳本,防止出現空白頁面的情況。
放在</body>之后
- Js的嚴格模式:
functiondoSomething(){
“use strict”;//開啟嚴格模式的代碼
//函數體
}
開啟嚴格模式之后,ECMAScript一些不確定和規范的操作將會得到處理
如果有意的忽略var的操作符,會由于相應變量不會馬上就有定義而導致不必要的混亂。在未經聲明的變量賦值在嚴格模式下會拋出ReferenceError的錯誤。
- Typeof(操作符)用于檢測給定變量的數據類型,undefind,boolean,string,number,boject,function,實例:
alert(typeof 95);--------//number
第四章:變量、作用域和內存問題
- 賦值變量值:當從一個變量復制基本數據類型值時,倆個都擁有各自的獨立內存,互不影響。而復制對象時,倆著都成為引用,則都指向一個保存在堆內存的對象。
var num1=3;
var num2=num1;
num1=4;
alert(num1);---//5;
alert(num2);---//3
var o1=new object();
var o2=o1;
o1.name=”hasname”;
alert(o2.name);---//hasname;
基本變量和對象引用變量作為函數參數傳遞時:基本變量復制成另一個內部函數變量,互不干擾。而對象引用變量給出引用,即多一個引用,倆者都指向一個對象。
局部作用域的對象不會在全局中變現出來,在局部建立的對象在函數結束時自動銷毀。
with(“object”)語句--將其添加到函數中,可以把object對象暫時引入到函數中,并將其添加到作用域的前端。在with執行環境中,能夠創建變量和更改object對象的屬性和變量。但是創建的變量是作為函數執行環境而言,是函數的局部變量,不能夠作為object對象的變量或者屬性。在結束with語句之后,該引用就會被銷毀,重新按執行環境執行。
沒有塊級作用域:在js中,在if語句或者for語句等語句中定義的變量在語句執行完成之后不會被銷毀。因為它是作為當前整個執行環境的變量(局部或者全局);
eg:for(vari=0;i<10;i++){
alert(i);
var a=”I am a”;
}
alert(i);alert(a);--//依然有效
第六章:引用類型:
- 創建對象的引用,對象字面量定義:
var object1=new object();
var object2={name:”name1”,age:29}; //以逗號隔開,最后一個無符號
varobject3={“name”:”name”,”age”:29};
varobject4={};object4.name=”name”;object4.age=29;
以上創建方法等價?。?!
- 利用對象面量語法傳遞大量可選參數:
eg:function display(object){
if(type ofobject.name=”string”)alert(object.name+”string類型的name”);
if(type ofobject.age=”number”)alert(object.age+”number類型的age”);
}
display({
name:”thisname”,
age:20
});
display({
age:19
});
- Array中模擬類似于堆棧的堆內存(先進后出FILO):
push(任意多個內容)—將括號內的內容依次添加到數組末尾,pop()—取出數組末尾的數。
push()方法返回添加后的數組長度,pop()返回的是移除的末尾數組內容。
模擬隊列方法(先進先出FIFO):shift()取出位于array中下標為0位的內容,?>即移除首位元素。
ECMAScript還提供unshift(任意多個內容)能夠把任意內容插入到數組前,
順序從左至右,依次插入。
4. 數組排序:
1.reverse()方法將數組中的項顛倒順序。
2.sort()將數組中的每個項執行toString()方法,然后進行升序比較。Sort()方法中接受一個比較函數,如果比較函數返回一個負數,就證明比較函數中的第一個value應該位于第二個value之前。反之比較函數返回一個正數。相等返回0。
eg:var arr=[1,5,0,10,15];
sort(compare);
document.write();//15,10,5,1,0
fucntioncompare(value1,value2){
if(value1){
return 1;
}
Else fi(value1>value2){
Return-1;//返回-1:value1在value2的前面。
}
elsereturn 0;
}
function compare(value1,value2){
returnvalue1-value2;//數值比較(valueof方法返回為number),升序排列、
}
5.復制數組:
concat(接受一個或多個任意項)該方法為數組引用對象的方法,能夠復制當前數組并將接受的參數依次添加到創建的副本數組中。并返回該數組副本。
slice(接受一個或者倆個數值)同為數組引用對象的方法,能夠根據參數確定引用數組中項的位置,并將之提取出來,重新創建一個數組返回。
var arr=[0,1,2,5,7,9];
var arr2=arr.slice(0,3)//newarr[0,1,2];相當于是[0,3)
var arr2=arr.slice(2);//newarray[2,5,7,9];接受一個參數時,其后都選中。
var arr2=arr.slice(-3,-1);//newarray[5,7];如果出現負數,則將數組長度與之相加為位置。如果還是負數,則返回空數組。
3. splice(2個及以上數量的參數);
刪除--倆個參數:第一個參數指定位置,第二個指定刪除個數。array.splice(0,2);刪除前倆項。
插入--3個參數或以上:第一二參數同上,第三個及以后參數為插入項。array.splice(1,0,”red”,”green”);從第二項開始插入red和green項。
替換—3個參數或以上:第一二參數同上,第三個及以后參數為替換項。array.splice(1,1,”grey”);刪除第二項,并將之替換為grey。
splice方始終會返回一個數組,該數組包含splice方法刪除的項(如果沒有刪除任何項,則返回一個空的數組)
上述原理為:不刪除,為插入,刪除即為替換。
- 定位查找數組項:indexOf(查找的,,查找起點位置(可選))順序查找。
lastindexOf(查找的項,查找起點位置(可選))末尾開始向前查找。也從末尾下標為0向前計數。
倆個方法都返回要查找的項在數組中的位置,在沒有找到的情況下返回-1,第一個參數要查找的項必須跟數組中的項完全相等,用==符號比較。倆者的地址要相等
- 迭代方法:都接受倆個參數,第一個為執行的函數,第二個為函數作用域(this)。
every()方法:每一item都滿足函數條件時,返回true;--每一項都滿足是為true。
filter()方法:返回滿足函數條件的item的數組;--我要看哪些項滿足條件,過濾器。
foreach()方法:為每個item都執行該函數,無返回;--我只要你們按照函數執行。
map()方法:每個item執行函數,并返回執行后的數組;--你們都執行函數,我要看你們的執行結果。
some()方法:每個item執行函數,只有要一個item執行后返回true,就返回一個true的值。--查看有沒有item滿足。
arra=[1,5,10,20,3,4,7];
varresult=arra.map(function(item,index,array){//index為項的索引array為數組的對象
returnitem*2;
});
console.log(result.toString());//2 10 20 40 60 8 14
- reduce()和reduceRight()累加器:他們都接受倆個參數,一個為執行的函數,一個為可選的縮小值。
執行的函數內,包含4個參數。pre為前一項,curr為當前項,index為索引,array為數組對象。當第一次運行函數式,pre為第一項,curr為第二項。
arra=[1,5,10,20,3,4,7];
result=arra.reduce(function(pre,curr,index,array) {//pre為1 curr為5
returnpre+curr;//求和示例
});
console.log(result);//50
Date類型:類型是早期java.util.Date類基礎上構建的。
RegExp對象(正則表達式):
1.創建:new RegExp(/ab+c/, 'i'); //ES6新增允許的寫法
a) g---global全局模式,表示正則將會依次查找并匹配整個文本。
b) i---case-insensitive忽略匹配的文本的大小寫。
c) m---multiline多行匹配,即會在匹配到一行末尾時,依然會匹配下一行。
- 對象方法:reg.exec(進行匹配的字符串)該方法進行捕獲字符串中的匹配值。