javascript之函數(shù)進(jìn)階詳解
函數(shù)定義方式
function fn(){}//命名函數(shù)
var fun=function(){}//匿名函數(shù)
// new fn=new Funcion("參數(shù)1","參數(shù)2","函數(shù)體"),很少用。
//所有函數(shù)都是Function的實例對象(函數(shù)也是對象)
var fn=new Funcion("a","b","console.log(a+b)")
console.log(fn instanceof Object)//true

函數(shù)的調(diào)用(6種)

?
?


?
this指向問題
1.普通函數(shù):window
2.對象方法:實例對象obj1
3.構(gòu)造函數(shù):實例對象。原型對象里面的this指向的也是 ldh這個實例對象
4.綁定事件函數(shù):事件的調(diào)用者button1
5.定時器:window
6.立即執(zhí)行函數(shù):window
改變函數(shù)內(nèi)部this指向:call(),apply(),bind(),

?
?
?如果有的函數(shù)我們不需要立即調(diào)用,但是又想改變這個函數(shù)內(nèi)部的this指向此時用bind
?
?
嚴(yán)格模式
?為整個腳本開啟或為函數(shù)開啟:“use strict”;

?嚴(yán)格模型的語法規(guī)范:
1.變量使用前必須聲明
2.我們不能隨意刪除已經(jīng)聲明好的變量
3.嚴(yán)格模型下的全局作用域中函數(shù)中的this是undefined
4.構(gòu)造函數(shù)不加new調(diào)用,this指向undefined,給undefined賦值會報錯(。以前指向window,相當(dāng)于給window添加屬性了)

5.定時器this還是指向window 。事件、對象還是指向調(diào)用者。
6.參數(shù)不能重名?
7.函數(shù)必須聲明在頂層.新版本的JavaScript 會引入“塊級作用域”(ES6 中已引入)。為了與新版本接軌,不允許在非函數(shù)的代碼塊內(nèi)聲明函數(shù)。

高階函數(shù)
定義:高階函數(shù)是對其他函數(shù)進(jìn)行操作的函數(shù),它接收函數(shù)作為參數(shù)(回調(diào)函數(shù))或?qū)⒑瘮?shù)作為返回值輸出。
閉包
閉包( closure )指有權(quán)訪問另一個函數(shù)作用域中變量的函數(shù)。簡單理解就是,一個作用域可以訪問另外一個函數(shù)內(nèi)部的局部變量。
閉包的作用:延伸變量的作用范圍

閉包練習(xí):
已知:綁定事件、定時器都是異步操作,不會立即執(zhí)行。
(function(i){...})(i) 立即執(zhí)行函數(shù)會立即執(zhí)行,參數(shù)傳給尾部的小括號,function里面的小括號會再次接收這個參數(shù)。立即執(zhí)行函數(shù)也稱作小閉包,里面的所有函數(shù)都可以訪問它內(nèi)部變量。
(1)點擊輸出當(dāng)前索引號(面試常見)

?(2)延遲三秒輸出<li>中內(nèi)容?

?(3)

?
?閉包的思考:

?
遞歸:函數(shù)里面調(diào)用自己,需要有結(jié)束條件
深拷貝與淺拷貝:
1.淺拷貝:只拷貝最上面一層,深層的對象只拷貝了地址,所以原深層數(shù)據(jù)改變會引起拷貝過來的深層數(shù)據(jù)改變
Object.assign(objNew,objOld)
2.深拷貝:把所有深層數(shù)據(jù)值全部拷貝到新對象里面。新舊兩個對象的數(shù)據(jù)修改互不影響。

相關(guān)文章
Bootstrap字體圖標(biāo)無法正常顯示的解決方法
這篇文章主要為大家詳細(xì)介紹了Bootstrap字體圖標(biāo)無法正常顯示的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對路徑方法
這篇文章主要介紹了Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對路徑方法,本文講解的方法比較特別,需要的朋友可以參考下2015-03-03
Bootstrap每天必學(xué)之導(dǎo)航條(二)
Bootstrap每天必學(xué)之導(dǎo)航條,進(jìn)一步向大家講解了導(dǎo)航條養(yǎng)殖,以及導(dǎo)航條中元素的使用方法,感興趣的小伙伴們可以參考一下2016-03-03
JS中改變this指向的方法(call和apply、bind)
this是javascript的一個關(guān)鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是總有一個原則,那就是this指的是調(diào)用函數(shù)的那個對象,通過本文給大家介紹JS中改變this指向的方法(call和apply、bind),需要的朋友參考下2016-03-03
手把手教你uniapp和uview2.0實現(xiàn)表單校驗實戰(zhàn)
表單提交對大家來說應(yīng)該都不陌生,這是個很常見的功能,這篇文章主要給大家介紹了關(guān)于手把手教你uniapp和uview2.0實現(xiàn)表單校驗的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
JavaScript 使用Ckeditor+Ckfinder文件上傳案例詳解
這篇文章主要介紹了JavaScript 使用Ckeditor+Ckfinder文件上傳案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
javascript實現(xiàn)避免頁面按鈕重復(fù)提交
很多時候我們都需要防止重復(fù)提交,這方面的文章也比較多,實現(xiàn)的途徑差別也很大.因為有些時候即使服務(wù)器能夠識別重復(fù)的提交,也會造成問題.比如需要很長等待時間的操作,在首次提交后,不斷重復(fù)提交,頁面可能會死掉.用腳本來控制的話可以防止這種問題.2015-01-01
JavaScript 選中文字并響應(yīng)獲取的實現(xiàn)代碼
當(dāng)鼠標(biāo)選擇一段文字時,對這個事件產(chǎn)生響應(yīng),并且將選中的文字傳遞出去。2011-08-08

