目錄
Boolean
Number
IIFE
Closure
Event
parseInt
Hex
«
BTW
Others
首頁 web前端 js教程 JavaScript 比較牛的指南的圖文詳解

JavaScript 比較牛的指南的圖文詳解

Mar 08, 2017 pm 02:23 PM

本文秉承著

你看不懂是你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 = 0
var 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(&#39;1000000000000000000000000&#39;, 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(&#39;*&#39;), 
dom => dom.style.outline = `1px solid #${parseInt(Math.random() * Math.pow(2,24)).toString(16)}`)
登入後複製

Others

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


以上是JavaScript 比較牛的指南的圖文詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
VSCode 設定中文:完全指南 VSCode 設定中文:完全指南 Mar 25, 2024 am 11:18 AM

VSCode設定中文:完整指南在軟體開發中,VisualStudioCode(簡稱VSCode)是一個常用的整合開發環境。對於使用中文的開發者來說,將VSCode設定為中文介面可以提升工作效率。本文將為大家提供一個完整的指南,詳細介紹如何將VSCode設定為中文介面,並提供具體的程式碼範例。第一步:下載安裝語言包開啟VSCode後,點選左

Windows11中VBS關閉指南 Windows11中VBS關閉指南 Mar 08, 2024 pm 01:03 PM

隨著Windows11的推出,微軟引進了一些新的功能和更新,包括一種名為VBS(Virtualization-basedSecurity)的安全功能。 VBS利用虛擬化技術來保護作業系統和敏感數據,從而提高系統的安全性。然而,對於某些使用者來說,VBS不是必需的功能,甚至可能會影響系統效能。因此,本文將介紹如何在Windows11中關閉VBS的方法,以協助

jQuery引用方法詳解:快速上手指南 jQuery引用方法詳解:快速上手指南 Feb 27, 2024 pm 06:45 PM

jQuery引用方法詳解:快速上手指南jQuery是一個受歡迎的JavaScript庫,被廣泛用於網站開發中,它簡化了JavaScript編程,並為開發者提供了豐富的功能和特性。本文將詳細介紹jQuery的引用方法,並提供具體的程式碼範例,幫助讀者快速上手。引入jQuery首先,我們需要在HTML檔案中引入jQuery函式庫。可以透過CDN連結的方式引入,也可以下載

平板安裝深度Linux: 平板安裝深度Linux: Feb 13, 2024 pm 11:18 PM

隨著科技的不斷發展,Linux作業系統在各個領域都得到了廣泛的應用,而在平板電腦上安裝深度Linux系統,則可以讓我們更加便捷地體驗Linux的魅力,我們就來探討一下平板安裝深度Linux的具體步驟。在準備工作在平板上安裝深度Linux之前,我們需要做好一些準備工作,我們需要備份平板中的重要數據,以免在安裝過程中造成數據丟失,我們需要下載深度Linux的鏡像文件,並將其寫入到U盤或SD卡中,以便在安裝過程中使用。安裝過程接下來,我們就可以開始進行安裝操作了,我們需要將平板電腦設定為從USB或SD

Conda使用指南:輕鬆升級Python版本 Conda使用指南:輕鬆升級Python版本 Feb 22, 2024 pm 01:00 PM

Conda使用指南:輕鬆升級Python版本,需要具體程式碼範例引言:在Python的開發過程中,我們經常需要升級Python版本來取得新的功能或修復已知的Bug。然而,手動升級Python版本可能會很麻煩,特別是當我們的專案和依賴套件相對複雜時。而幸運的是,Conda作為一個優秀的套件管理器和環境管理工具,可以幫助我們輕鬆升級Python版本。本文將介紹如何使

PHP7安裝目錄設定指南 PHP7安裝目錄設定指南 Mar 11, 2024 pm 12:18 PM

PHP7安裝目錄設定指南PHP是一種流行的伺服器端腳本語言,用於開發動態網頁。目前,PHP的最新版本是PHP7,它引入了許多新特性和效能最佳化,是許多網站和應用程式的首選版本。在安裝PHP7時,正確配置安裝目錄是非常重要的,本文將為您提供一個詳細的PHP7安裝目錄配置指南,並附上具體的程式碼範例。下載PHP7首先,您需要從PHP官方網站(https://www.

Golang桌面應用開發指南 Golang桌面應用開發指南 Mar 18, 2024 am 09:45 AM

Golang桌面應用程式開發指南隨著網路的普及和數位時代的來臨,桌面應用程式在我們的生活和工作中扮演著越來越重要的角色。而作為一種強大的程式語言,Golang(Go語言)在桌面應用程式開發領域也逐漸嶄露頭角。本文將為您介紹如何使用Golang來開發桌面應用程序,並提供具體的程式碼範例,幫助您快速入門和掌握開發技巧。首先,我們需要了解一些基本概念和工具。在Gol

Linux ldconfig使用指南 Linux ldconfig使用指南 Mar 14, 2024 pm 12:36 PM

標題:Linuxldconfig使用指南在Linux系統中,ldconfig指令是一個非常重要的工具,用於更新動態連結器執行階段連接到執行程式中的共用程式庫的連結檔。正確使用ldconfig可以確保系統能夠正確找到並載入對應的共享庫文件,從而確保程式的正常運作。本文將介紹ldconfig的基本用法,並提供一些具體的程式碼範例。一、ldconfig簡介ldcon

See all articles