基礎 JavaScript 裝逼指南

2021-02-20 藍橋雲課精選

本文秉承著:

你看不懂是你sb,我寫的代碼就要牛逼

的理念來介紹一些js的裝逼技巧。

下面的技巧,後三個,請謹慎用於團隊項目中(主要考慮到可讀性的問題),不然,leader 幹你沒商量。

▶Boolean◀

這個技巧用的很多,也非常的簡單

!!'foo'

通過兩個取反,可以強制轉換為Boolean類型。較為常用。

▶Number◀

這個也特別簡單,String轉化為Number

+'45'+new Date

會自動轉化為number類型的。較為常用。

▶IIFE◀

這個其實非常有實用價值,不算是裝逼。只是其他語言裡沒有這麼玩的,給不太了解js的同學看那可牛逼大了。

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

實用價值在於可以防止全局汙染。不過現在隨著ES2015的普及已經沒什麼必要用這個了,我相信五年之後,這種寫法就會逐漸沒落。

自己幹五年,在實習生面前裝逼用也是蠻不錯的嘛~

▶Closure◀

閉包嘛,js 特別好玩的一個地方。上面的立即執行函數就是對閉包的一種運用。

不了解的回去翻翻書,知乎上也有很多討論,可以去看看。

閉包用起來對初學者來說簡直就是大牛的標誌(其實並不是)。

var counter = function() {    var count = 0    return function() {        return count++    }}

上面用到了閉包,看起來還挺裝逼的吧。不過好像沒什麼實用價值。

那麼這樣呢?

var isType = function(type) {    return function(obj) {        return toString.call(obj) == '[Object ' + type + ']';    }}

通過高階函數很輕鬆的實現判定類別。(別忘了有判定Array的Array.isArray())

當然,很明顯,這只是基礎,並不能更裝逼一點。來看下一節

▶Event◀

事件響應前端肯定都寫爛了,一般來說如何寫一個計數器呢?

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

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

這個時候這樣一個事件監聽代碼就比較牛逼了

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

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

通過創建一個閉包,把times封裝到裡面,然後返回函數。這個用法不太常見。


高能預警!!

從這裡開始,下面的代碼謹慎寫到公司代碼裡!


▶parseInt◀

parseInt這個函數太普通了,怎麼能裝逼。答案是~~

現在摁下F12,在console裡複製粘貼這樣的代碼:

~~3.14159// => 3~~5.678// => 5

這個技巧十分裝逼,原理是~是一個叫做按位非的操作,會返回數值的反碼。是二進位操作。

原因在於JavaScript中的number都是double類型的,在位操作的時候要轉化成int,兩次~就還是原數。

▶Hex◀

十六進位操作。其實就是一個Array.prototype.toString(16)的用法

看到這個詞腦袋裡冒出的肯定是CSS的顏色。

做到隨機的話可以這樣

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

底下的原文連結非常建議去讀一下,後三個技巧都是在那裡學到的。

«

左移操作。這個操作特別叼。一般得玩 C 玩得多的,這個操作會懂一些。一般半路出家的前端碼農可能不太了解(說的是我 ☹)。

這個也是二進位操作。將數值二進位左移

解釋上面的1<<24的操作。

其實是1左移24位。000000000000000000000001左移24位,變成了1000000000000000000000000

不信?

試著在console粘貼下面的代碼

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

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

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

因為是二進位操作,所以速度是很快的。


▶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)
                  }`)

▶Others◀

其他的,像是一些await, Decorators什麼的。用上TypeScript基本就懂的東西我就不介紹了。

祝願大家越玩越牛逼

轉載自: https://annatarhe.github.io/2016/04/19/hack-js-code.html

作者: AnnatarHe


相關焦點

  • 健身房裝逼指南,太真實了!
    健身房裝逼指南,太真實了! 有句話說得好嘛 「自古深情留不住,唯有套路得人心」 今天就要搬出壓箱底的 《健身房裝逼指南》
  • JavaScript 基礎語法
    5 變量(標識符)6 JavaScript基本數據類型7 課程小結8 課後練習1 回顧JavaScript的基本組成JavaScript = ECMAScript + DOM + BOM;今天我們要講解的就是ECMAScript中的部分基礎語法
  • Python爬蟲基礎:常用HTML標籤和Javascript入門
    1  HTML基礎大部分HTML標籤是閉合的,由開始標籤和結束標籤構成
  • 在蒙自月薪1萬裝逼指南!拿走不謝
    不要覺得貴,租個3000的房,可以幫助你裝出月薪三萬的逼,裝逼槓桿率500%。小編造你們一般秀早餐是這樣的▼真正的原因是,你正餐的主力,真功夫、大快活乃至隆江豬腳飯什麼的都不太適合上鏡,真正為了裝逼效果而吃頓貴的也沒必要。月薪一萬,應該把 多快好省、神出鬼沒 作為裝逼的指導思想。
  • 閩南語裝逼指南——教你如何用英文說好咱方言!
    所以,本君特別製作了一期「閩南語裝逼指南」,輔用「英文」發音,不僅讓其中的一些日常用語更加「高大上」,同時也能閩南話更富有國際範兒,讓外國友人看完也能夠瞬間朗朗上口。接下來,鬥陣來看麥《閩南語裝逼指南》,乎恁講閩南話(The dialect of Southern Fujian)瞬間Bigger than bigger!!!
  • 口紅裝逼指南
    ▼最近,妹紙過得那叫一個昏天黑地,差點忘了裝逼指南這檔子事兒。
  • javascript基礎總結
    這就導致很多人都會用JavaScript,但卻很少有人能用的很精通的原因,因為他們大小看js這門語言的基礎和內在了,基礎,無論何時都是一個重要的存在,最直接的就是在你面試的時候,如果連js的數據類型都答不上來那是不是就太過分了…… 接下來,就讓我們一起總結一下JavaScript的基礎。一、語法javascript中的一切(變量、函數名和操作符)都區分大小寫。
  • 每日一課 | JavaScript基礎
    使用<script></script>標籤: 2    屬性: 3    charset(可選)字符集設置、 4    defer(可選執行順序)值:defer、 5    language(已廢除)、 6    src(可選)使用外部的js腳本文件 7    type(必選)類型:值:text/javascript 8
  • 星巴克完美裝逼指南(最高能版本)
    (原標題:星巴克完美裝逼指南(最高能版本))
  • 通篇乾貨丨寫春聯裝逼指南
    以下,貢獻一份寫春聯裝逼指南,供大家參考。01春聯的起源要想裝逼,起碼得知道這件事物的來龍去脈吧,這樣小夥伴問起來的時候才好侃侃而談、秀一把知識儲備。>柳公權歐陽詢顏真卿趙孟智永王羲之米芾黃庭堅掌握了這些裝逼技巧
  • 2020年同學聚會裝逼指南!有同學的都轉!
    想要重新回味青春年少的美好時光,可又害怕同學中高逼格的「裝逼」? 不論你喜歡裝逼還是討厭裝逼,小編奉上《同學會裝逼指南》,都不會令你失望! 1 接到邀請時
  • 鹹魚突刺 三、西浦新生對外裝逼指南
    不過在您到校之前,可能需要仔細思考一個問題,那就是到校後怎麼利用西浦的資源進行裝逼?想來我西浦民辦之校,區區十載,稱譽尚淺,落地不足千畝,聞名限於姑蘇;身在此校,如何在開學季內奪取裝逼高地,領風騷於一方?別擔心,本文精心總結了前幾屆學長學姐初來乍到時的裝逼經驗,為您的裝逼生活消解謬誤,指明捷徑,願您此文在手,一季裝逼無憂。
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascriptDate對象javascript String對象JavaScript常用於實現一些前端效果。
  • 最強大、最牛逼的javascript視頻免費發布啦
    是一門非常強大的腳本語言,應用的範圍非常廣泛,每一個web開發者學好javascript也是必須的,本套視頻教程詳細的講解了javascript各個知識點、關鍵點,其中涉及到高深的函數概念、原型概念、接口概念、單體概念、更是詳細的講解了javascript設計模式。 本
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    它不是必備,但在未來學習(JavaScript)中,可以作為一篇指南。從基礎到高級:測試您對 JavaScript 的了解程度,稍微刷新一下知識或為編寫代碼面試做準備!比如下面會輸出是什麼?https://github.com/lydiahallie/javascript-questions4. JavaScript 30
  • 暑期墨鏡裝逼指南
    時隔兩個夏季,咱終於為各位帶來極為靠譜的眼鏡裝逼指南之墨鏡篇。19世紀中期:護目鏡那個時代,真正意義上的墨鏡,在西方誕生。那時,還不叫太陽鏡或墨鏡,而是護目鏡。因為使用它們的大都是有特殊要求的專業人士,比如常年在外奔波搏命的探險隊員,再比如滑雪者。而當時的鏡片,大都由天然材質製成,比如有色水晶、琥珀或雲母,鏡框也相當沉重。
  • javascript入門推薦書籍-授人以魚不如授人以漁
    我們應該把 javascript 當作一門真正的程式語言,而不是玩具語言。2、JavaScript權威指南當然,作為入門書的話《JavaScript權威指南(第5版)》也非常強大(這名字可不是白起),網上關於此書的評價很多,意思大概都是說這書就是一個JS的文檔手冊,如果你有閒錢,並且習慣翻 書查詢,那麼就來一本吧。
  • JavaScript 基礎:「47」JavaScript 語言中 parseInt 函數用法詳解
    通過學習 JavaScript 算法及數據結構這一系列文章,你將會逐步掌握 JavaScript 基礎相關的知識。JavaScript 語言中 parseInt 函數用法詳解。我們在日常編程過程中,經常會遇到不同數據類型轉換的問題。用得比較多的是字符串轉換為整型,還有一些常用的不同進位轉換。
  • JavaScript為什麼這麼難?
    只有真正的javascript程式設計師才知道javascript太難了。其他程式設計師都覺得javascript是門玩具語言。javascript太難了。難點javascript的真值表,可以體驗一下。javascript使用一種非主流的對象機制,基於原型鏈的對象繼承機制。這需要我們拋棄很多語言的Class的思想。認真研究下這個原型鏈。
  • 如何在KTV用英文歌裝逼?
    今天,專注KTV裝逼多年的音樂帝,就要給大家帶來KTV英文歌裝逼指南,逗各位一笑。文藝級:小眾高冷類舉例:Born To Die; The Climb, The Fall 等高冷曲目裝逼最保險,因為學習其實並不難,但是很少人會唱。不過,既然主打高冷,標準發音最好先練練,不然容易產生違和感。