這篇文章主要介紹JavaScript普通函數(shù)和箭頭函數(shù)有哪些區(qū)別,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
黃陵網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
我常常的使用箭頭函數(shù),卻還沒有對箭頭函數(shù)有個深入的了解,現(xiàn)在找一下這2個函數(shù)的不同點
由于箭頭函數(shù)沒有原型,因此箭頭函數(shù)本身沒有this
let a = () => {} console.log(a.prototype) // undefined let b = function () {} console.log(b.prototype) // Object
let a; let barObj = { msg: 'bar的this指向' } let fooObj = { msg: 'foo的this指向' } bar.call(barObj) foo.call(fooObj) // { msg: 'bar的this指向' } bar.call(fooObj) a() // { msg: 'foo的this指向' } function foo() { a() } function bar () { a = () => { console.log(this) } }
從上面例子中可以得出:
箭頭函數(shù)的this指向定義時所在的外層第一個普通函數(shù),跟使用位置沒有沒有關(guān)系
被繼承的普通函數(shù)的this指向改變,箭頭函數(shù)的this也會跟著改變。
不能直接修改箭頭函數(shù)的this
可以通過修改被繼承的普通函數(shù)的this指向,然后箭頭函數(shù)的this也會跟著改變
3. 箭頭函數(shù)使用arguments
let b = () => { console.log(arguments); } b(1,2,3,4) // arguments is not defined function bar () { console.log(arguments); // 完成第二個普通函數(shù) bb('完成第一個普通函數(shù)') function bb() { console.log(arguments); // 完成第一個普通函數(shù) let a = () => { console.log(arguments); // 完成第一個普通函數(shù) } a('箭頭函數(shù)') } } bar('完成第二個普通函數(shù)')
從上面可以得出以下2點
無論箭頭函數(shù)的this指向哪里,使用new調(diào)用箭頭函數(shù)都會報錯,箭頭函數(shù)沒有構(gòu)造函數(shù)
let a = () => {} let b = new a() // a is not a constructor
以上是JavaScript普通函數(shù)和箭頭函數(shù)有哪些區(qū)別的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!