日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript 裝逼指南(js另類寫法)

瀏覽:257日期:2023-10-28 17:31:15

下面就是具體的寫法,建議大家逐個測試一下,加深印象

轉(zhuǎn)Boolean類型

這個較為常用。

!!’a’//true

通過兩個取反,可以強(qiáng)制轉(zhuǎn)換為Boolean類型。

!!是將表達(dá)式強(qiáng)制轉(zhuǎn)化為bool值的運(yùn)算,運(yùn)算結(jié)果為true或false,表達(dá)式是什么值,結(jié)果就是對應(yīng)的bool值,不再取非。

不是取非再取非的意思!!!

!!false=false; 要注意false和“false” 的區(qū)別!!!!!

!!'false'=true;

!!true=true;

!!(NaN || undefined || null || 0 || ’ ’)=false;

轉(zhuǎn)Number類型

String轉(zhuǎn)化為Number;日期輸出時間戳。

+’45’//45 +new Date//13位時間戳

會自動轉(zhuǎn)化為Number類型的。日期取時間戳不用new Date().getTime()。

JavaScript 裝逼指南(js另類寫法)

parseInt

parseInt這個函數(shù)太普通了,怎么能裝逼。答案是~~,這種方法還可以將字符串轉(zhuǎn)換成數(shù)字類型。向下取整。

~~3.14159//3 ~~’5.678’//5 -2.33 | 0 //-2 2.33 >> 0 //2

原理是~是一個叫做按位非的操作,會返回?cái)?shù)值的反碼,兩次取反就是原數(shù)。|為位運(yùn)算符,兩個位只要有一個為1,那么結(jié)果都為1,否則就為0。>>運(yùn)算符執(zhí)行有符號右移位運(yùn)算。都是二進(jìn)制操作。 原因在于JavaScript中的number都是double類型的,在位操作的時候要轉(zhuǎn)化成int。

Hex

十六進(jìn)制操作。其實(shí)就是一個Array.prototype.toString(16)的用法看到這個詞腦袋里冒出的肯定是CSS的顏色。

做到隨機(jī)的話可以這樣

(~~(Math.random()*(1<<24))).toString(16)

底下的原文鏈接非常建議去讀一下,后三個技巧都是在那里學(xué)到的。«左移操作。這個操作特別叼。一般得玩 C 玩得多的,這個操作會懂一些。一般半路出家的前端碼農(nóng)可能不太了解(說的是我 ☹)。這個也是二進(jìn)制操作。將數(shù)值二進(jìn)制左移解釋上面的1<<24的操作。其實(shí)是1左移24位。000000000000000000000001左移24位,變成了1000000000000000000000000不信?試著在console粘貼下面的代碼

parseInt(’1000000000000000000000000’, 2) === (1 << 24)

其實(shí)還有一種更容易理解的方法來解釋

Math.pow(2,24) === (1 << 24)

因?yàn)槭嵌M(jìn)制操作,所以速度是很快的。

短路表達(dá)式,棄用if-else

反面示例:

if () { // ... } else if () { // ... } else { // ... }

用 || 和 &&來簡化if-else 。有時候用 !! 操作符也能簡化if-else模式。例如這樣:

let a = b || 1;//b為真,a=b;b為假,a=1; let c = b && 1;//b為真,c=1;b為假,c=b; // 使用!!符號 let isValid = !!(value && value !== ’error’);

“!”是取反操作,兩個“!”自然是負(fù)負(fù)得正了。比較常用的是||。

另外一種undefined

let data = void 0; // undefined

void 運(yùn)算符 對給定的表達(dá)式進(jìn)行求值,然后返回 undefined。那為什么要用void 0,不直接undefined呢? undefined在javascript中不是保留字。因此在IE5.5~8中我們可以將其當(dāng)作變量那樣對其賦值(IE9+及其他現(xiàn)代瀏覽器中賦值給undefined將無效)。采用void方式獲取undefined更準(zhǔn)確。

保留指定位數(shù)的小數(shù)點(diǎn)

let num = 2.443242342; num = num.toFixed(4); //'2.4432'

注意, toFixed() 方法返回的是字符串而不是一個數(shù)字。

單行寫一個評級組件

let rate = 3; '★★★★★☆☆☆☆☆'.slice(5 - rate, 10 - rate);//'★★★☆☆'

slice() 方法可提取字符串的某個部分,并以新的字符串返回被提取的部分stringObject.slice(start,end)

JavaScript 裝逼指南(js另類寫法)

金錢格式化

//正則 let cash = ’1234567890’ cash.replace(/B(?=(d{3})+(?!d))/g, ’,’);//'1,234,567,890' //非正則的優(yōu)雅實(shí)現(xiàn) function formatCash(str) { return str.split(’’).reverse().reduce((prev, next, index) => { return ((index % 3) ? next : (next + ’,’)) + prev }) } formatCash(cash);//'1,234,567,890'

非正則的方法,先把字符串轉(zhuǎn)成了數(shù)組,反轉(zhuǎn)了一下變成了[0,9,8,7,6,5,4,3,2,1]。再對新的數(shù)組進(jìn)行reduce操作,數(shù)組元素位置除3取余,是3的倍數(shù)的位置就增加’,’,最后返回累加的字符串。

標(biāo)準(zhǔn)JSON的深拷貝

let a = { a1: 1, b1: { c: 1, d: 2 } }; let b=JSON.parse(JSON.stringify(a)); b;//{a1: 1, b1: {…}}

不考慮IE的情況下,標(biāo)準(zhǔn)JSON格式的對象蠻實(shí)用,不過對于undefined和function的會忽略掉。

數(shù)組去重

阿里面試官,喜歡問這個問題。

let array=[1, '1', 2, 1, 1, 3]; //拓展運(yùn)算符(...)內(nèi)部使用for...of循環(huán) [...new Set(array)];//[1, '1', 2, 3] //利用Array.from將Set結(jié)構(gòu)轉(zhuǎn)換成數(shù)組 Array.from(new Set(array));//[1, '1', 2, 3]

傳統(tǒng)的方法,循環(huán)遍歷:排序sort()后前一下與后一個比較==;在數(shù)組中用indexOf判斷,利用includes,利用filter;這些方法感覺都過時了,還是用ES6中利用Set去重比較牛。

取數(shù)組中的最大值和最小值

Math.max方法可以求出給定參數(shù)中最大的數(shù)。

Math.max(’1’,’2’,’3.1’,’3.2’);//3.2 Math.min(1,0,-1);//-1

但如果是數(shù)組,就不能這樣調(diào)用了。此時就用到了apply方法。Function.apply()是JS的一個OOP特性,一般用來模擬繼承和擴(kuò)展this的用途。所有函數(shù)都有apply(作用域鏈,參數(shù))這個方法,當(dāng)作用域鏈為null時,默認(rèn)為上文,這個函數(shù)的“參數(shù)”,接收一個數(shù)組。

let arr = [’1’,’2’,’3.1’,’3.2’,0,-1]; //用apply方法 Math.max.apply(null, arr);//3.2 Math.min.apply(Math, arr);//-1 //用拓展運(yùn)算符 Math.max(...arr);//3.2 Math.min(...arr);//-1IIFE

這個其實(shí)非常有實(shí)用價(jià)值,不算是裝逼。只是其他語言里沒有這么玩的,給不太了解js的同學(xué)看那可牛逼大了。

(function(arg) { // do something})(arg)

實(shí)用價(jià)值在于可以防止全局污染。不過現(xiàn)在隨著ES2015的普及已經(jīng)沒什么必要用這個了,我相信五年之后,這種寫法就會逐漸沒落。

自己干五年,在實(shí)習(xí)生面前裝逼用也是蠻不錯的嘛~

BTW

[].forEach.call($$('*'),function(a){ a.style.outline='1px solid #'+(~~(Math.random()*(1<<24))).toString(16)})

翻譯成正常語言就是這樣的

Array.prototype.forEach.call(document.querySelectorAll(’*’), dom => dom.style.outline = `1px solid #${parseInt(Math.random() * Math.pow(2,24)).toString(16)}`)Event

事件響應(yīng)前端肯定都寫爛了,一般來說如何寫一個計(jì)數(shù)器呢?

var times = 0var foo = document.querySelector(’.foo’)foo.addEventListener(’click’, function() { times++ console.log(times)}, false)

好像是沒什么問題哦,但是!變量times為什么放在外面,就用了一次放在外面,命名沖突了怎么辦,或者萬一在外面修改了怎么辦。

這個時候這樣一個事件監(jiān)聽代碼就比較牛逼了

foo.addEventListener(’click’, (function() { var times = 0 return function() { times++ console.log(times) }})(), false)

怎么樣,是不是立刻感覺不一樣了。瞬間逼格高了起來!

通過創(chuàng)建一個閉包,把times封裝到里面,然后返回函數(shù)。這個用法不太常見。

以上就是JavaScript 裝逼指南(js另類寫法)的詳細(xì)內(nèi)容,更多關(guān)于js裝逼寫法的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美一区二区三区精品观看| 日韩精品亚洲专区在线观看| 国产精品一站二站| 奇米亚洲欧美| 日韩av中文字幕一区二区三区| 亚洲精品无吗| 日韩国产成人精品| 欧美亚洲三级| 国产精品亚洲产品| 精品资源在线| av资源中文在线天堂| 欧美一级鲁丝片| 91精品一区二区三区综合| 久久九九精品| 亚洲少妇诱惑| 亚洲1区在线| 日韩av资源网| 国产激情一区| 高清不卡亚洲| 91九色精品| 久久香蕉精品| 日本精品在线播放| 精品久久久网| 久久中文亚洲字幕| 美女网站久久| 国产欧美一区二区色老头| 国产一区二区视频在线看| 天堂网av成人| 蜜桃视频第一区免费观看| 日韩成人午夜精品| 国产成人免费视频网站视频社区| 日韩不卡免费高清视频| 久久国产精品久久久久久电车| 青草综合视频| 日韩精品1区| 免费看日韩精品| 国产精品视频一区二区三区综合| 激情国产在线| 免费在线观看精品| 麻豆91在线播放| 不卡视频在线| 久久国内精品自在自线400部| 日韩伦理一区| 亚洲精品字幕| 国产suv精品一区二区四区视频| 国产国产精品| 91福利精品在线观看| 在线天堂资源www在线污| 99在线|亚洲一区二区| 国产精品白丝一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 中文字幕视频精品一区二区三区| 国产精品久一| 午夜精品婷婷| 欧美黑人巨大videos精品| 在线精品视频在线观看高清| 欧美亚洲人成在线| 欧美午夜精品一区二区三区电影| 婷婷五月色综合香五月| 麻豆视频在线观看免费网站黄| 免费黄网站欧美| 欧美韩一区二区| 亚洲在线观看| 国内精品美女在线观看| 亚洲一区二区成人| 国产一区二区视频在线看| 一区二区国产在线| 欧洲亚洲一区二区三区| 久久国内精品视频| 91久久午夜| 久久久久久一区二区| 亚洲毛片一区| 亚洲电影有码| 国产精品毛片久久久| 麻豆91精品| 91精品一区二区三区综合| 国产精品s色| 另类国产ts人妖高潮视频| 日韩免费看片| 免费在线观看一区| 亚洲乱亚洲高清| 亚洲国产成人精品女人| 国产传媒在线观看| 国产精品久久| 日韩视频1区| 亚洲精品一二三区区别| 波多视频一区| 国产精品视频3p| 亚洲人成亚洲精品| 激情欧美国产欧美| 成人台湾亚洲精品一区二区| 日韩动漫一区| 日韩中文字幕麻豆| 欧美日韩国产在线一区| 久久久久国产精品一区三寸| 国产成人精品三级高清久久91| 天堂久久av| 蜜臀av一区二区在线免费观看 | 日本电影久久久| 中国女人久久久| 蜜桃tv一区二区三区| 欧美亚洲日本精品| 成人在线免费观看网站| 免费视频一区二区三区在线观看| 日韩av不卡一区二区| 亚洲欧美日本视频在线观看| 欧美日韩国产探花| 免费av一区二区三区四区| 亚洲国产成人二区| 国产一区二区三区黄网站| 美女av一区| 国产精品久久久久久av公交车| 日韩精品久久理论片| 日本一区二区三区中文字幕| 日韩欧美四区| 91精品啪在线观看国产爱臀| 日韩激情精品| 日本成人一区二区| 97久久中文字幕| 欧美日韩一区二区三区在线电影| 一区二区电影在线观看| 色综合视频一区二区三区日韩 | 香蕉精品视频在线观看| 欧美特黄一级大片| 蜜桃国内精品久久久久软件9| 99久久婷婷| 久久麻豆精品| 婷婷综合五月| 免费精品视频| 亚洲小说春色综合另类电影| 亚洲一区二区三区中文字幕在线观看| 日本 国产 欧美色综合| 免费一区二区视频| 日韩国产欧美在线视频| 国产精品自在| 精品国产乱码久久久久久樱花| 久久精品人人| 日韩国产一区二区| 九九综合九九| 国产模特精品视频久久久久| 亚洲精品日本| 欧美日韩中出| 欧美激情视频一区二区三区免费 | 麻豆视频在线看| 欧美sss在线视频| 91久久久精品国产| 日韩在线观看一区二区| 欧美中文高清| 久久久精品国产**网站| av高清不卡| 99视频在线精品国自产拍免费观看| 首页欧美精品中文字幕| 欧美精品三级在线| 国产精品99久久精品| 欧洲av一区二区| 伊人影院久久| 久久精品凹凸全集| 日韩电影免费在线观看| 宅男噜噜噜66国产日韩在线观看| 亚洲另类黄色| 久久99国产精品视频| 特黄特色欧美大片| 蜜桃一区二区三区在线| 久久久久九九精品影院| 国产99精品一区| 深夜福利一区| 91亚洲国产高清| 国产精品毛片| 国产精品视频一区视频二区| 国产精品高颜值在线观看| 亚洲深爱激情| 国产精品一区二区精品视频观看 | 亚洲a一区二区三区| 欧美资源在线| 久久精品国产久精国产| 亚洲精品一区二区妖精| 欧美在线黄色| 在线观看精品| 日韩综合一区二区| 成人一区而且| 中文一区二区| 美女精品一区二区| 亚洲欧美日本视频在线观看| 国产三级一区| 欧美va天堂在线| 国产毛片精品| 黄色免费成人| 欧美极品中文字幕| 久久国产精品久久久久久电车| 精品一区二区三区在线观看视频| 伊人久久大香线蕉av超碰演员| 国产精品中文| 国产精品三上| 97精品国产一区二区三区| 蜜桃传媒麻豆第一区在线观看| 国产精品扒开腿做爽爽爽软件| 精品1区2区3区4区| 精品国产网站| 日韩专区视频网站| 蜜桃tv一区二区三区|