成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

普通函數(shù)和箭頭函數(shù)

tolerious / 1564人閱讀

摘要:我常常的使用箭頭函數(shù),卻還沒有對箭頭函數(shù)有個(gè)深入的了解,現(xiàn)在找一下這個(gè)函數(shù)的不同點(diǎn)箭頭函數(shù)本身沒有原型由于箭頭函數(shù)沒有原型,因此箭頭函數(shù)本身沒有箭頭函數(shù)的指向在定義的時(shí)候繼承自外層第一個(gè)普通函數(shù)的的指向的指向的指向的指向從上面例子中可以得出

我常常的使用箭頭函數(shù),卻還沒有對箭頭函數(shù)有個(gè)深入的了解,現(xiàn)在找一下這2個(gè)函數(shù)的不同點(diǎn)

1. 箭頭函數(shù)本身沒有prototype(原型)

由于箭頭函數(shù)沒有原型,因此箭頭函數(shù)本身沒有this

let a = () => {}
console.log(a.prototype) // undefined
let b = function () {}
console.log(b.prototype) // Object
2. 箭頭函數(shù)的this指向在定義的時(shí)候繼承自外層第一個(gè)普通函數(shù)的this
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)
    }
}

從上面例子中可以得出2點(diǎn):

箭頭函數(shù)的this指向定義時(shí)所在的外層第一個(gè)普通函數(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);  // 完成第二個(gè)普通函數(shù)
        bb("完成第一個(gè)普通函數(shù)")
        function bb() {
            console.log(arguments); // 完成第一個(gè)普通函數(shù)
            let a = () => {
                console.log(arguments); // 完成第一個(gè)普通函數(shù)
            }
            a("箭頭函數(shù)")
        }
    }
    bar("完成第二個(gè)普通函數(shù)")

從上面可以得出以下2點(diǎn)

箭頭函數(shù)指向window時(shí),arguments會報(bào)未定義的錯(cuò)誤

如果不是window,那么就是外層第一個(gè)普通函數(shù)的arguments

4. 箭頭函數(shù)不可以使用new

無論箭頭函數(shù)的this指向哪里,使用new調(diào)用箭頭函數(shù)都會報(bào)錯(cuò),箭頭函數(shù)沒有構(gòu)造函數(shù)

let a = () => {}
    let b = new a() // a is not a constructor

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103377.html

相關(guān)文章

  • 普通函數(shù)箭頭函數(shù)的區(qū)別以及箭頭函數(shù)的注意事項(xiàng)、不適用場景

    摘要:第二種情況是箭頭函數(shù)的如果指向普通函數(shù)它的繼承于該普通函數(shù)。箭頭函數(shù)的指向全局,使用會報(bào)未聲明的錯(cuò)誤。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭頭函數(shù)是ES6的API,相信很多人都知道,因?yàn)槠湔Z法上相對于普通函數(shù)更簡潔,深受大家的喜愛。就是這種我們?nèi)粘i_發(fā)中一直在使用的API...

    paulquei 評論0 收藏0
  • ES6精解:箭頭函數(shù)

    摘要:基本用法在中允許使用來定義函數(shù),如下就等同于從上面可以看出,在箭頭左側(cè)的是代表參數(shù),若參數(shù)只有一個(gè),可以省略,箭頭右側(cè)的表示函數(shù)代碼塊,若代碼塊里面是個(gè)返回值,則可以省略不寫無參數(shù)情況若箭頭函數(shù)不需要參數(shù),則左側(cè)用代替,如下無參數(shù)情況無參數(shù) 基本用法 在ES6中允許使用 => 來定義函數(shù),如下: var f = a => a; console.log(f(1)); //1 就...

    HackerShell 評論0 收藏0
  • es6 - 箭頭函數(shù)

    摘要:也就是說箭頭函數(shù)的的值不再根據(jù)調(diào)用時(shí)上下文確定,而是像普通變量那樣根據(jù)定義時(shí)的作用域鏈進(jìn)行查找。箭頭函數(shù)中的依然要根據(jù)定義時(shí)的作用域鏈進(jìn)行查找。知乎這篇文章對箭頭函數(shù)的一些不適合的場景進(jìn)行了總結(jié),可以作為參考。 es6 - 箭頭函數(shù) 哇,箭頭函數(shù)...,聽起來好NB,但是如果你知道它是因?yàn)槭褂昧?>這樣類似箭頭的符號 ,所以才叫箭頭函數(shù)。 瞬間感覺:呵,這名字起的...。 es6增加了...

    13651657101 評論0 收藏0
  • 箭頭函數(shù)普通函數(shù)的區(qū)別及示例

    摘要:箭頭函數(shù)是前端面試環(huán)節(jié)的一個(gè)高頻考點(diǎn),一般會問箭頭函數(shù)的是指如何用普通函數(shù)實(shí)現(xiàn)一個(gè)箭頭函數(shù)箭頭函數(shù)有哪些優(yōu)點(diǎn)帶著這些問題,小編帶各位上路吧箭頭函數(shù)與普通函數(shù)得區(qū)別普通函數(shù)函數(shù)作為全局函數(shù)被調(diào)用時(shí),指向全局對象函數(shù)作為對象中的方法被調(diào)用時(shí),指 箭頭函數(shù)是前端面試環(huán)節(jié)的一個(gè)高頻考點(diǎn),一般會問 1、箭頭函數(shù)的this是指?2、如何用普通函數(shù)實(shí)現(xiàn)一個(gè)箭頭函數(shù)3、箭頭函數(shù)有哪些優(yōu)點(diǎn) 帶著這些問題...

    Backache 評論0 收藏0
  • ES6 - 箭頭函數(shù)、箭頭函數(shù)普通函數(shù)的區(qū)別總結(jié)

    摘要:但是因?yàn)榧^函數(shù)沒有自己的,它的其實(shí)是繼承了外層執(zhí)行環(huán)境中的,且指向永遠(yuǎn)不會隨在哪里調(diào)用被誰調(diào)用而改變,所以箭頭函數(shù)不能作為構(gòu)造函數(shù)使用,或者說構(gòu)造函數(shù)不能定義成箭頭函數(shù),否則用調(diào)用時(shí)會報(bào)錯(cuò)報(bào)錯(cuò)箭頭函數(shù)沒有自己的箭頭函數(shù)沒有自己的對象。 這篇文章我們來了解一下ES6中的箭頭函數(shù)。首先會介紹一下箭頭函數(shù)的基本語法,因?yàn)榛菊Z法比較好理解,我們用示例做簡單介紹即可。之后,我們重點(diǎn)來討論一下...

    scola666 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<