日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

箭头函数与普通函数,以及使用场景

發布時間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 箭头函数与普通函数,以及使用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接
箭頭函數和普通函數的區別如下。

普通函數:根據調用我的人(誰調用我,我的this就指向誰)

箭頭函數:根據所在的環境(我再哪個環境中,this就指向誰)

一針見血式總結:


普通函數中的this:

  • this總是代表它的直接調用者(js的this是執行上下文), 例如 obj.func ,那么func中的this就是obj
  • 2.在默認情況(非嚴格模式下,未使用 ‘use strict’),沒找到直接調用者,則this指的是 window (常見的window的屬性和方法有: alert, location,document,parseInt,setTimeout,setInterval等)(約定俗成)

    3.在嚴格模式下,沒有直接調用者的函數中的this是 undefined

    4.使用call,apply,bind(ES5新增)綁定的,this指的是 綁定的對象

    箭頭函數中的this

    箭頭函數沒有自己的this, 它的this是繼承而來; 默認指向在定義它時所處的對象(宿主對象),而不是執行時的對象, 定義它的時候,可能環境是window; 箭頭函數可以方便地讓我們在 setTimeout ,setInterval中方便的使用this

    要整明白這些, 我們需要首先了解一下作用域鏈:

    當在函數中使用一個變量的時候,首先在本函數內部查找該變量,如果找不到則找其父級函數,

    最后直到window,全局變量默認掛載在window對象下

    使用場景
    箭頭函數適合于無復雜邏輯或者無副作用的純函數場景下,例如:用在 map、reduce、filter 的回調函數定義中
    箭頭函數的亮點是簡潔,但在有多層函數嵌套的情況下,箭頭函數反而影響了函數的作用范圍的識別度,這種情況不建議使用箭頭函數
    箭頭函數要實現類似純函數的效果,必須剔除外部狀態。所以箭頭函數不具備普通函數里常見的 this、arguments 等,當然也就不能用 call()、apply()、bind() 去改變 this 的指向
    箭頭函數不適合定義對象的方法(對象字面量方法、對象原型方法、構造器方法),因為箭頭函數沒有自己的 this,其內部的 this 指向的是外層作用域的 this

    總結

    以上是生活随笔為你收集整理的箭头函数与普通函数,以及使用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。