JavaSctipt高級程序 前5章左右

第二章:小結(jié)

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

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

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

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

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

//函數(shù)體

}

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

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

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

第四章:變量、作用域和內(nèi)存問題

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

  2. 局部作用域的對象不會在全局中變現(xiàn)出來,在局部建立的對象在函數(shù)結(jié)束時自動銷毀。

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

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

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

alert(i);

var a=”I am a”;

}

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

第六章:引用類型:

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

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

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

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

以上創(chuàng)建方法等價?。?!

  1. 利用對象面量語法傳遞大量可選參數(shù):
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中模擬類似于堆棧的堆內(nèi)存(先進后出FILO):

push(任意多個內(nèi)容)—將括號內(nèi)的內(nèi)容依次添加到數(shù)組末尾,pop()—取出數(shù)組末尾的數(shù)。
push()方法返回添加后的數(shù)組長度,pop()返回的是移除的末尾數(shù)組內(nèi)容。

模擬隊列方法(先進先出FIFO):shift()取出位于array中下標為0位的內(nèi)容,?>即移除首位元素。

ECMAScript還提供unshift(任意多個內(nèi)容)能夠把任意內(nèi)容插入到數(shù)組前,

順序從左至右,依次插入。

4. 數(shù)組排序:

1.reverse()方法將數(shù)組中的項顛倒順序。

2.sort()將數(shù)組中的每個項執(zhí)行toString()方法,然后進行升序比較。Sort()方法中接受一個比較函數(shù),如果比較函數(shù)返回一個負數(shù),就證明比較函數(shù)中的第一個value應該位于第二個value之前。反之比較函數(shù)返回一個正數(shù)。相等返回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;//數(shù)值比較(valueof方法返回為number),升序排列、

}

5.復制數(shù)組:

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

  2. slice(接受一個或者倆個數(shù)值)同為數(shù)組引用對象的方法,能夠根據(jù)參數(shù)確定引用數(shù)組中項的位置,并將之提取出來,重新創(chuàng)建一個數(shù)組返回。

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];接受一個參數(shù)時,其后都選中。

var arr2=arr.slice(-3,-1);//newarray[5,7];如果出現(xiàn)負數(shù),則將數(shù)組長度與之相加為位置。如果還是負數(shù),則返回空數(shù)組。

3. splice(2個及以上數(shù)量的參數(shù));

刪除--倆個參數(shù):第一個參數(shù)指定位置,第二個指定刪除個數(shù)。array.splice(0,2);刪除前倆項。

插入--3個參數(shù)或以上:第一二參數(shù)同上,第三個及以后參數(shù)為插入項。array.splice(1,0,”red”,”green”);從第二項開始插入red和green項。

替換—3個參數(shù)或以上:第一二參數(shù)同上,第三個及以后參數(shù)為替換項。array.splice(1,1,”grey”);刪除第二項,并將之替換為grey。

splice方始終會返回一個數(shù)組,該數(shù)組包含splice方法刪除的項(如果沒有刪除任何項,則返回一個空的數(shù)組)

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

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

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

  1. 迭代方法:都接受倆個參數(shù),第一個為執(zhí)行的函數(shù),第二個為函數(shù)作用域(this)。

every()方法:每一item都滿足函數(shù)條件時,返回true;--每一項都滿足是為true。

filter()方法:返回滿足函數(shù)條件的item的數(shù)組;--我要看哪些項滿足條件,過濾器。

foreach()方法:為每個item都執(zhí)行該函數(shù),無返回;--我只要你們按照函數(shù)執(zhí)行。

map()方法:每個item執(zhí)行函數(shù),并返回執(zhí)行后的數(shù)組;--你們都執(zhí)行函數(shù),我要看你們的執(zhí)行結(jié)果。

some()方法:每個item執(zhí)行函數(shù),只有要一個item執(zhí)行后返回true,就返回一個true的值。--查看有沒有item滿足。

arra=[1,5,10,20,3,4,7];

varresult=arra.map(function(item,index,array){//index為項的索引array為數(shù)組的對象

returnitem*2;

});

console.log(result.toString());//2 10 20 40 60 8 14
  1. reduce()和reduceRight()累加器:他們都接受倆個參數(shù),一個為執(zhí)行的函數(shù),一個為可選的縮小值。
執(zhí)行的函數(shù)內(nèi),包含4個參數(shù)。pre為前一項,curr為當前項,index為索引,array為數(shù)組對象。當?shù)谝淮芜\行函數(shù)式,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類基礎上構(gòu)建的。

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

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

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

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

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

  1. 對象方法:reg.exec(進行匹配的字符串)該方法進行捕獲字符串中的匹配值。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容