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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

抄袭一些别人工作中的小技巧

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抄袭一些别人工作中的小技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1-類型強制轉換

1.1 字符串轉整形

'32' * 1 // 32 'ds' * 1 // NaN null * 1 // 0 undefined * 1 // NaN

或者

+ '123' // 123 + 'ds' // NaN + '' // 0 + null // 0 + undefined // NaN

1.2 使用Boolean過濾數組中的所有假值

const compact = arr => arr.filter(Boolean) compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]) // [ 1, 2, 3, 'a', 's', 34 ]

1.3 雙位運算符 ~~
可以使用雙位操作符來替代 Math.floor( )。雙否定位操作符的優勢在于它執行相同的操作運行速度更快。

Math.floor(4.9) === 4 //true // 簡寫為: ~~4.9 === 4 //true~~4.5 // 4 Math.floor(4.5) // 4 ~~-4.5 // -4 Math.floor(-4.5) // -5

對整數來說 ~~ 運算結果與 Math.floor( ) 運算結果相同,而對于負數來說不相同.

1.4 短路運算符

&& 為取假運算,從左到右依次判斷,如果遇到一個假值,就返回假值,以后不再執行,否則返回最后一個真值


|| 為取真運算,從左到右依次判斷,如果遇到一個真值,就返回真值,以后不再執行,否則返回最后一個假值

let param1 = expr1 && expr2 let param2 = expr1 || expr2

可以用來做很多有意思的事,比如給變量賦初值:

例一:

let variable1 let variable2 = variable1 || 'foo'

如果variable1是真值就直接返回了,后面短路就不會被返回了,如果為假值,則會返回后面的foo。

例二:

可以用來進行簡單的判斷,取代冗長的if語句:

let variable = param && param.prop

如果param如果為真值則返回param.prop屬性,否則返回param這個假值,這樣在某些地方防止param為undefined的時候還取其屬性造成報錯。

1.5 取整 | 0

對一個數字| 0可以取整,負數也同樣適用,num | 0

1.3 | 0 // 1 -1.9 | 0 // -1

1.7 判斷奇偶數 & 1

對一個數字& 1可以判斷奇偶數,負數也同樣適用,num & 1

const num=3; !!(num & 1) // true !!(num % 2) // true

2. 函數

2.1 函數默認值

func = (l, m = 3, n = 4 ) => (l * m * n); func(2) //output: 24

注意,傳入參數為undefined或者不傳入的時候會使用默認參數,但是傳入null還是會覆蓋默認參數。

2.2 強制參數

默認情況下,如果不向函數參數傳值,那么JS 會將函數參數設置為undefined。其它一些語言則會發出警告或錯誤。要執行參數分配,可以使用if語句拋出未定義的錯誤,或者可以利用強制參數。

mandatory = ( ) => {throw new Error('Missing parameter!'); } foo = (bar = mandatory( )) => { // 這里如果不傳入參數,就會執行manadatory函數報出錯誤return bar; }

2.3 隱式返回值

返回值是我們通常用來返回函數最終結果的關鍵字。只有一個語句的箭頭函數,可以隱式返回結果(函數必須省略大括號{ },以便省略返回關鍵字)。

要返回多行語句(例如對象文本),需要使用( )而不是{ }來包裹函數體。這樣可以確保代碼以單個語句的形式進行求值。

function calcCircumference(diameter) {return Math.PI * diameter } // 簡寫為: calcCircumference = diameter => (Math.PI * diameter; )

在某個場景下我們的函數中有判斷語句,這個判斷依據在整個項目運行期間一般不會變化,所以判斷分支在整個項目運行期間只會運行某個特定分支,那么就可以考慮惰性載入函數

function foo(){if(a !== b){console.log('aaa')}else{console.log('bbb')} }// 優化后 function foo(){if(a != b){foo = function(){console.log('aaa')}}else{foo = function(){console.log('bbb')}}return foo(); }

2.5 一次性函數

跟上面的惰性載入函數同理,可以在函數體里覆寫當前函數,那么可以創建一個一次性的函數,重新賦值之前的代碼相當于只運行了一次,適用于運行一些只需要執行一次的初始化代碼

var sca = function() {console.log('msg')sca = function() {console.log('foo')} } sca() // msg sca() // foo sca() // foo

3. 代碼復用

3.1 驗證函數的簡化示例:

當有很多表單,則需要應用驗證,此時會有不同的字段和規則。如果可以構建一個在運行時配置的通用驗證函數,會是一個好選擇。

// object validation rules const schema = {first: {required:true},last: {required:true} }// universal validation function const validate = (schema, values) => {for(field in schema) {if(schema[field].required) {if(!values[field]) {return false;}}}return true; } console.log(validate(schema, {first:'Bruce'})); // false console.log(validate(schema, {first:'Bruce',last:'Wayne'})); // true

現在有了這個驗證函數,我們就可以在所有窗體中重用,而無需為每個窗體編寫自定義驗證函數。


4. 數組

5.1 reduce方法同時實現map和filter

假設現在有一個數列,你希望更新它的每一項(map的功能)然后篩選出一部分(filter的功能)。如果是先使用map然后filter的話,你需要遍歷這個數組兩次。 在下面的代碼中,我們將數列中的值翻倍,然后挑選出那些大于50的數。

const numbers = [10, 20, 30, 40]; const doubledOver50 = numbers.reduce((finalList, num) => {num = num * 2;if (num > 50) {finalList.push(num);}return finalList; }, []); doubledOver50;

5.2 統計數組中相同項的個數

很多時候,你希望統計數組中重復出現項的個數然后用一個對象表示。那么你可以使用reduce方法處理這個數組。

下面的代碼將統計每一種車的數目然后把總數用一個對象表示。

var cars = ['BMW','Benz', 'Benz', 'Tesla', 'BMW', 'Toyota']; var carsObj = cars.reduce(function (obj, name) {obj[name] = obj[name] ? ++obj[name] : 1;return obj; }, {}); carsObj; // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }

5.3 使用解構來交換參數數值

有時候你會將函數返回的多個值放在一個數組里。我們可以使用數組解構來獲取其中每一個值。

let param1 = 1; let param2 = 2; [param1, param2] = [param2, param1]; console.log(param1) // 2 console.log(param2) // 1

5.4 接收函數返回的多個結果

在下面的代碼中,我們從/post中獲取一個帖子,然后在/comments中獲取相關評論。由于我們使用的是async/await,函數把返回值放在一個數組中。而我們使用數組解構后就可以把返回值直接賦給相應的變量。

async function getFullPost(){return await Promise.all([fetch('/post'),fetch('/comments')]); } const [post, comments] = getFullPost();

5.5 將數組平鋪到指定深度

使用遞歸,為每個深度級別 depth 遞減 1 。 使用 Array.reduce() 和 Array.concat() 來合并元素或數組。 基本情況下,depth 等于 1 停止遞歸。 省略第二個參數,depth 只能平鋪到 1 (單層平鋪) 的深度。

const flatten = (arr, depth = 1) =>depth != 1? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), []): arr.reduce((a, v) => a.concat(v), []); flatten([1, [2], 3, 4]); // [1, 2, 3, 4] flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8]

6. 對象

6.1 使用解構刪除不必要屬性

有時候你不希望保留某些對象屬性,也許是因為它們包含敏感信息或僅僅是太大了(just too big)。你可能會枚舉整個對象然后刪除它們,但實際上只需要簡單的將這些無用屬性賦值給變量,然后把想要保留的有用部分作為剩余參數就可以了。
下面的代碼里,我們希望刪除_internal和tooBig參數。我們可以把它們賦值給internal和tooBig變量,然后在cleanObject中存儲剩下的屬性以備后用。

let {_internal, tooBig, ...cleanObject} = {el1: '1', _internal:"secret", tooBig:{}, el2: '2', el3: '3'};console.log(cleanObject); // {el1: '1', el2: '2', el3: '3'}

6.2 在函數參數中解構嵌套對象

在下面的代碼中,engine是對象car中嵌套的一個對象。如果我們對engine的vin屬性感興趣,使用解構賦值可以很輕松地得到它。

var car = {model: 'bmw 2018',engine: {v6: true,turbo: true,vin: 12345} } const modelAndVIN = ({model, engine: {vin}}) => {console.log(`model: ${model} vin: ${vin}`); } modelAndVIN(car); // => model: bmw 2018 vin: 12345

參考:

  • JavaScript 開發人員需要知道的簡寫技巧
  • 《Effective Javascript》
  • 不得不知的ES6小技巧
  • js運算符的一些特殊應用
  • JS高級技巧(簡潔版)

原文地址: https://juejin.im/post/5b51e5d3f265da0f4861143c

總結

以上是生活随笔為你收集整理的抄袭一些别人工作中的小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 女人被狂躁c到高潮喷水电影 | 麻豆爱爱视频 | 丰满圆润老女人hd | 久久精品久久久久久久 | 毛片av网址| 亚洲二区在线视频 | 色窝窝综合色窝窝久久 | 炕上如狼似虎的呻吟声 | 99久久综合网 | 日本视频免费在线播放 | 先锋影音亚洲 | 日韩aaaaaa | 国内精品免费视频 | 欧美激情区 | 日xxxx| 国产91精品一区 | 黑人玩弄人妻一区二区三区四 | 成人高清视频免费观看 | 国产淫语对白 | 久久久老司机 | 绿色地狱在线观看 | 日韩亚洲欧美一区二区三区 | 乱熟女高潮一区二区在线 | 草莓视频一区二区三区 | 久精品视频 | 日韩中文字幕一区二区三区四区 | 色哟哟一区二区 | 亚洲一区免费 | 青青草在线观看视频 | 国产一区二区欧美 | 亚洲第五页 | 在线观看h网站 | 九一精品视频 | 校园激情av | 亚洲第一精品在线观看 | 初音未来打屁股 | 少妇一级淫片免费视频 | 99爱爱视频| 国产精品尤物 | 色婷婷热久久 | 亚洲综合在线五月 | 免费色片 | 国产一区二区三区中文字幕 | 国产日韩av一区二区 | 欧美精品福利 | 日韩精品中字 | 久久艹精品 | 日韩三级在线 | 亚洲黄色免费 | 欧美 日韩 国产 精品 | 99r热| 青青伊人网 | 一区二区三区午夜 | 中文字幕在线免费观看视频 | 91尤物视频| 成年人免费在线观看视频网站 | 亚洲精品在线不卡 | 国产美女毛片 | 辟里啪啦国语版免费观看 | 欧美v在线| 伊人久久中文字幕 | 小明天天看 | 国产第一福利影院 | 亚洲小说网 | 精品久久福利 | 午夜福利一区二区三区 | 国产资源在线看 | 黄色在线网站 | 99色99 | 亚洲福利社区 | 国产精品免费视频一区二区三区 | 国产h视频| 美女av在线免费观看 | 在线毛片网站 | 国产a国产片 | 91女人18毛片水多国产 | 网址在线观看你懂的 | 欧美性一区| 在线观看1区 | 成人a网站 | 浓精h攵女乱爱av | 99热在线观看精品 | av 一区二区三区 | 国产一级片中文字幕 | 国产精品色在线 | 秋霞亚洲 | 成人性视频网站 | 黄色网页在线看 | 亚洲午夜精品一区二区 | 蜜臀尤物一区二区三区直播 | 国产电影一区二区三区 | 波多野结衣av在线观看 | 国产一区二区视频免费在线观看 | 樱花草涩涩www在线播放 | 亚洲国产福利视频 | 亚洲av成人一区二区国产精品 | 欧美bbw视频 | 欧洲av一区二区三区 | 综合久色 |