JavaSctipt高級程序 前5章左右

第二章:小結

  1. 在使用JavaScript外部腳步時,src屬性可以鏈接到外部文件,也可以鏈接到外部域的文件。
<javascript src="路徑" type="text/javascript"></javascript>
  1. 元素會按照默認的方式進行,前提是不使用defer和async屬性情況下,
  1. defer=”defer”屬性將延遲到瀏覽器遇到之后才會執行,但是支持html5標準的瀏覽器中,會忽略這個屬性,所以把延遲腳本放在頁面底部是最佳選擇。

  2. async src=”example.js” 屬性目的是為了不讓頁面等待腳本下載,而異步加載頁面的其他內容,該屬性腳本一定會在頁面的load事件前執行。

  3. 一般應該把元素放在前面,目的是為了先加載頁面,在執行腳本,防止出現空白頁面的情況。

放在</body>之后
  1. Js的嚴格模式:
functiondoSomething(){

“use   strict”;//開啟嚴格模式的代碼

//函數體

}

開啟嚴格模式之后,ECMAScript一些不確定和規范的操作將會得到處理

如果有意的忽略var的操作符,會由于相應變量不會馬上就有定義而導致不必要的混亂。在未經聲明的變量賦值在嚴格模式下會拋出ReferenceError的錯誤。

  1. Typeof(操作符)用于檢測給定變量的數據類型,undefind,boolean,string,number,boject,function,實例:
alert(typeof 95);--------//number

第四章:變量、作用域和內存問題

  1. 賦值變量值:當從一個變量復制基本數據類型值時,倆個都擁有各自的獨立內存,互不影響。而復制對象時,倆著都成為引用,則都指向一個保存在堆內存的對象。
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;
  1. 基本變量和對象引用變量作為函數參數傳遞時:基本變量復制成另一個內部函數變量,互不干擾。而對象引用變量給出引用,即多一個引用,倆者都指向一個對象。

  2. 局部作用域的對象不會在全局中變現出來,在局部建立的對象在函數結束時自動銷毀。

  3. with(“object”)語句--將其添加到函數中,可以把object對象暫時引入到函數中,并將其添加到作用域的前端。在with執行環境中,能夠創建變量和更改object對象的屬性和變量。但是創建的變量是作為函數執行環境而言,是函數的局部變量,不能夠作為object對象的變量或者屬性。在結束with語句之后,該引用就會被銷毀,重新按執行環境執行。

  4. 沒有塊級作用域:在js中,在if語句或者for語句等語句中定義的變量在語句執行完成之后不會被銷毀。因為它是作為當前整個執行環境的變量(局部或者全局);

eg:for(vari=0;i<10;i++){

alert(i);

var a=”I am a”;

}

alert(i);alert(a);--//依然有效

第六章:引用類型:

  1. 創建對象的引用,對象字面量定義:
var object1=new object();

var object2={name:”name1”,age:29}; //以逗號隔開,最后一個無符號

varobject3={“name”:”name”,”age”:29};

varobject4={};object4.name=”name”;object4.age=29;

以上創建方法等價?。?!

  1. 利用對象面量語法傳遞大量可選參數:
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

});
  1. 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.復制數組:

  1. concat(接受一個或多個任意項)該方法為數組引用對象的方法,能夠復制當前數組并將接受的參數依次添加到創建的副本數組中。并返回該數組副本。

  2. 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方法刪除的項(如果沒有刪除任何項,則返回一個空的數組)

上述原理為:不刪除,為插入,刪除即為替換。
  1. 定位查找數組項:indexOf(查找的,,查找起點位置(可選))順序查找。

lastindexOf(查找的項,查找起點位置(可選))末尾開始向前查找。也從末尾下標為0向前計數。

倆個方法都返回要查找的項在數組中的位置,在沒有找到的情況下返回-1,第一個參數要查找的項必須跟數組中的項完全相等,用==符號比較。倆者的地址要相等

  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
  1. 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
  1. Date類型:類型是早期java.util.Date類基礎上構建的。

  2. RegExp對象(正則表達式):

1.創建:new RegExp(/ab+c/, 'i'); //ES6新增允許的寫法

a) g---global全局模式,表示正則將會依次查找并匹配整個文本。

b) i---case-insensitive忽略匹配的文本的大小寫。

c) m---multiline多行匹配,即會在匹配到一行末尾時,依然會匹配下一行。

  1. 對象方法:reg.exec(進行匹配的字符串)該方法進行捕獲字符串中的匹配值。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,268評論 0 4
  • 第5章 引用類型 引用類型的值(對象)是引用類型的一個示例。在ECMAScript 中,引用類型是一種數據結構,用...
    力氣強閱讀 733評論 0 0
  • 本章內容 使用對象 創建并操作數組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 695評論 0 0
  • 今日鍛煉如下:中午1h瑜伽晚上45m拳擊課+20m卷腹&腿部運動 工作日雷打不動每天給自己留出時間鍛煉,早已習慣了...
    魔都阿貍閱讀 1,178評論 2 4
  • 因為老哥搬家,想送點兒東西,千挑萬選選中了多肉,手欠買了一堆(其實是故意的(*∩_∩*)),準備送他個拼盤,我自己...
    白跑磨鞋底閱讀 202評論 1 1