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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

lodash 核心源码学习(基于4.17.11版本)

發(fā)布時間:2025/3/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lodash 核心源码学习(基于4.17.11版本) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

源碼地址?https://raw.githubusercontent.com/lodash/lodash/4.17.11-npm/core.js

13行:? var undefined

es5之前 undefined 可以被 window.undefined = '我被覆蓋了'這樣的操作所覆蓋,所以定義了未初始化的undefined,此時undefined變量的值一定是undefined,避免全局undefined變量被覆蓋導致判斷不準的問題。

74行 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports

和77行 var freeModule = typeof module == 'object' && object && !module.nodeType && module

檢測自由變量exports, module 是否存在,?

這里 !exports.nodeType作用:用于確保 exports 不是dom節(jié)點 。

由于在新版瀏覽器中 ,可以不用聲明直接獲取id的元素, 若定義了類似<div id='epxorts'></div>的話,直接打印 exports 的結(jié)果為該dom元素 。

89-92行 ,作用: 將一個數(shù)組的每一個元素添加到另一個數(shù)組

function arrayPush(array, values) { array.push.apply(array, values); return array; }復制代碼

這里用了apply的特性,apply后的第一個參數(shù)會代替原函數(shù)的this對象,第二個參數(shù)為傳入函數(shù)的參數(shù),且為數(shù)組形式, 那么某種程度就相當于變成了 array.push(...values)這樣

105-115行,作用: 找到下標,在_.findIndex有引用

function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while ((fromRight ? index-- : ++index < length)) { if (predicate(array[index], index, array)) {return index; } } return -1; }復制代碼

解析:predicate為查找規(guī)則,?

1. 未傳入 fromRight , 檢索數(shù)組下標大于等于fromIndex的值, index初始值為 fromIndex - 1,循環(huán)中先將index + 1(先將多減的 1 加回來)然后判斷是否小于數(shù)組長度,符合時判斷是否符合查找規(guī)則

2.傳入 fromRight , 檢索數(shù)組下標小于等于fromIndex的值, index初始值為 fromIndex + 1,循環(huán)中先判斷 index 是否為真,真時使用 index - 1 作為下標取數(shù)組元素傳入查找規(guī)則

這里官方例子給的predicate參數(shù)只有當前元素,其實有三個, 當前元素,當前元素下標,原數(shù)組,有需要可以自己組合

124-128行, 作用:找到對象某個鍵的值,_.property有引用 ,不支持深層查找

function baseProperty(key) { return function(object) { return object == null ? undefined : object[key]; }; }復制代碼

137-141行僅是把參數(shù)對調(diào)了一下

function basePropertyOf(object) { return function(key) { return object == null ? undefined : object[key]; }; }復制代碼

相當于對傳入的object先進行了一步判斷是否存在


待續(xù)





與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的lodash 核心源码学习(基于4.17.11版本)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。