自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不知道這十個術(shù)語,你還敢說會JavaScript?

開發(fā) 前端
從Curry到Closes,有很多JavaScript行話(該領(lǐng)域中使用的特殊詞匯)知道這些行話不僅能幫助你增加詞匯量,還能更好地理解JavaScript。

每個行業(yè),都有業(yè)內(nèi)“行話”,不了解這些行話的人,很難融入到行業(yè)中,也永遠(yuǎn)裝不了。

從Curry到Closes,有很多JavaScript行話(該領(lǐng)域中使用的特殊詞匯)知道這些行話不僅能幫助你增加詞匯量,還能更好地理解JavaScript。

術(shù)語通常出現(xiàn)在文檔和技術(shù)文章中。但是其中一些像Closes一樣是非常標(biāo)準(zhǔn)的事情。了解這個詞本身的含義可以幫助您更好地了解它所命名的概念。

今天我們來聊聊 10 個JavaScript術(shù)語及其含義和在 JavaScript中使用的上下文的匯編。如果您是初學(xué)者,那么此列表為您提供了諸如吊裝之類的基礎(chǔ)知識。同時,其中還包括鮮為人知或鮮為人知的術(shù)語。

1. Arity

Arity(來自拉丁語)是用于指代函數(shù)或操作中的參數(shù)或操作數(shù)數(shù)量的術(shù)語。當(dāng)它用于提及JavaScript 函數(shù)期望的參數(shù)數(shù)量時,您最有可能在 JavaScript 領(lǐng)域遇到這個詞。

該對象甚至還有一個名為arity的屬性,F(xiàn)unction返回函數(shù)中預(yù)期參數(shù)的數(shù)量。但已經(jīng)過時,現(xiàn)在是length替代了它返回參數(shù)的數(shù)量

以下函數(shù)有三個輸入?yún)?shù)。

function getName(first, middle, last){
return first+' '+ middle +' '+last;
}

2. Anonymous

Anonymous是形容詞。當(dāng)某物或某人被稱為Anonymous時,這意味著該物或人的名字是未知的。同樣,在 JavaScript 中,Anonymous函數(shù)是沒有名稱標(biāo)識的函數(shù)。

(function (){
//body
})();

上面是一個IIFE(立即調(diào)用函數(shù)表達(dá)式)。其中的函數(shù)沒有名稱。我們也看看下面這個:

var foo = function() {

};

這也被稱為Anonymous函數(shù),因?yàn)殛P(guān)鍵字后面沒有名字function。

在這里,對“Anonymous”的使用我產(chǎn)生了一點(diǎn)疑問,使用 IIFE,該函數(shù)被立即調(diào)用,不涉及名稱,而調(diào)用后面函數(shù)foo()則需要使用語法。

就像我們用名稱'foo'命名了一個無名函數(shù)并使用它來調(diào)用它。這算Anonymous函數(shù)嗎?我不知道,這個得問問javascript之父了。拋開我的困惑不談,它們確實(shí)都被稱為Anonymous函數(shù)。

3. Closure

這是牛津詞典中關(guān)于關(guān)閉的定義之一:“關(guān)閉或密封某物的東西,例如帽子或領(lǐng)帶。”

在 JavaScript 中,closure是一個內(nèi)部函數(shù),可以在外部函數(shù)范圍之外訪問,它與外部函數(shù)變量的連接仍然完好無損。

為了解釋closure(也許不夠準(zhǔn)確,但足夠簡單),我們可以將closure視為餐廳的服務(wù)員。我們?nèi)ゲ蛷d吃飯時,飯菜都是廚師做的,廚師大部分時間都在餐廳廚房,餐廳廚房是禁止我們進(jìn)入的。我們應(yīng)該如何獲得我們的食物呢?

那就是服務(wù)員幫忙了。我們點(diǎn)菜,然后服務(wù)員會去廚房,將訂單通知廚師,并在訂單準(zhǔn)備好時將飯菜帶給我們。這樣我們就沒有違反任何“規(guī)則”,我們就可以享受美食了。

服務(wù)員是能夠?qū)⑽覀兊挠唵螏霃N房并帶著食物返回的員工。closure就是類似的“員工”,它們能夠從函數(shù)內(nèi)部獲取我們的參數(shù)并帶回我們的變量(準(zhǔn)確地說是對這些變量的引用)。

function order() {
var food;
function waiter(order) {
chef(order);
return food;
}
function chef(order) {
if (order === 'pasta') {
food = ['pasta', 'gravy', 'seasoning'];
cook();
}
}
function cook() { food.push('cooked'); }
return waiter;
}
var myOrder = order();
console.log(myOrder('pasta'));
// Array [ "pasta", "gravy", "seasoning", "cooked" ]

正如您從上面的代碼中看到的那樣,除了waiterorder 函數(shù)內(nèi)部的所有內(nèi)容及其返回值之外的所有內(nèi)容都不會暴露給外界。

4. Currying

這種效果以Haskell Curry的名字命名,指的是使用具有單參數(shù)的多個函數(shù)來代替具有多個參數(shù)的單個函數(shù)。例如,讓我們看看下面的add函數(shù)。

function addx(x){
function addy(y){
return x+y;
}
return addy
}

function add(x,y){
return(x+y);
}

console.log(addx(3)(4)); \\7
console.log(add(3,4)); \\7

這兩個函數(shù)都是返回相同的結(jié)果。該函數(shù)在返回時addx接受一個參數(shù),該參數(shù)又接受該值,執(zhí)行加法并返回總和。x``addy``y``x 

該函數(shù)add簡單地同時接受兩者x,y執(zhí)行加法并返回總和。到目前為止,第一個功能可能看起來不是很有用,直到……

var add4 = addx(4);
console.log(add4(8)); //12
console.log(add4(6)); //10
console.log(add4(-74)); //-70

現(xiàn)在,前一個函數(shù)突然變得有趣起來。在currying中,您總是可以修復(fù)一系列操作中的一個步驟,比如從上述代碼中添加4,這在操作中使用的一個變量始終相同時很有用。

5. Hoisting

Hoist的意思是舉起東西。JavaScript 中的Hoist也意味著相同,提出的是聲明(變量和函數(shù)聲明)。

聲明是使用關(guān)鍵字var(不適用于全局)和function。

無論您在哪個地方輸入代碼來聲明函數(shù)或變量,在評估期間,所有聲明都會在它們所在的范圍內(nèi)向上移動(嚴(yán)格模式除外)。因此,可以編寫一個工作代碼,將函數(shù)調(diào)用代碼放在函數(shù)聲明之前。

var name = 'Velma';
console.log(sayCatchPhrase(name)); /"Jinkies!"

function sayCatchPhrase(name) {
phrases = {
'Fred Flintstone': 'Yabba dabba doo!',
'Velma': 'Jinkies!',
'Razor': 'Bingo!',
'He-Man': 'I Have the Power'
};
return phrases[name];
}

6. Mutation

Mutation意味著改變或修改。如果你在 JavaScript 中遇到過Mutation這個詞,它可能指的是 DOM 元素所經(jīng)歷的變化。

甚至還有一個稱為 MutationObserver 的 API 可以密切關(guān)注 DOM 突變,例如添加子元素或更改元素的屬性。

7. Pragma

Pragma是實(shí)用信息的縮寫。在簡單的英語中,pragmatic 是一個形容詞,表示明智和實(shí)用。在編程中,pragma是指包含有關(guān)編譯器或解釋器或匯編器應(yīng)如何處理程序有用信息的代碼。

它對編程語言本身沒有任何貢獻(xiàn),其語法可能會有所不同。它們只影響編譯器的行為。JavaScript 也有很少的 pragma,其中之一是strict。

"use strict";

通過上述 pragma,JavaScript 代碼將以嚴(yán)格的模式執(zhí)行。在嚴(yán)格模式下,不允許錯誤的語法,不進(jìn)行提升,顯示靜默錯誤等。它有助于編寫更安全和優(yōu)化的 JavaScript 代碼。

8.Sentinels

Sentinels是守衛(wèi)的士兵(還記得 X 戰(zhàn)警中的哨兵嗎?)。在編程中,Sentinels是用來指示循環(huán)或過程結(jié)束的值。它們也可以稱為“flags”。

您可以使用任何合理的值作為sentinel。這是JavaScript 中使用的哨兵的示例;indexOf當(dāng)在目標(biāo)字符串中找不到搜索值時返回 -1(標(biāo)記值)的方法。下面是一個返回數(shù)組值位置的函數(shù),如果找不到值,則返回 -1。

function getPos(ary, val) {
var i=0, len=ary.length;
for(;i<len;i++){
if(ary[i]===val) return i+1;
}
return -1;
}
console.log(getPos(['r','y','w'],'y')); //2
console.log(getPos(['r','y','w'],'g')); //-1

9.Vanilla

這個單詞是香草味的意思,哈哈哈,有可能外國人喜歡冰激凌吧。不僅在冰淇淋中,而且在幾乎所有甜食中,香草都成為了標(biāo)準(zhǔn)口味。我見過不少蛋糕食譜,他們在混合物中至少加入一滴香草——只是為了增加味道。

這就是香草*,一種傳統(tǒng)的標(biāo)準(zhǔn)風(fēng)味。*Vanilla JavaScript 指的是標(biāo)準(zhǔn) JavaScript——沒有框架。Vanilla 實(shí)際上不僅用于描述 JavaScript 的標(biāo)準(zhǔn)版本,還用于描述 CSS 等其他語言。

10. Variadic

Variadic是通過連接“variable”和“adicity”而創(chuàng)建的形容詞?!癆dicity”來自古希臘語,其含義與拉丁詞“arity”(此列表中的第 1 項(xiàng))相同。因此,術(shù)語Variadic用于表達(dá)具有可變數(shù)量參數(shù)的東西。

在 JavaScript 中,Variadic函數(shù)接受任意數(shù)量的參數(shù)。它可以使用arguments屬性、apply方法以及從 ES6 開始的擴(kuò)展運(yùn)算符來創(chuàng)建。下面是使用擴(kuò)展運(yùn)算符的示例。

function test(...a){
console.log(a);
}
test('a','b','c',8,[56,-89]);
//output is Array [ "a", "b", "c", 8, Array[2] ]

好了,今天10個JavaScript術(shù)語就介紹到這了,大家可以去試試,yyds!

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2024-09-11 16:21:09

2025-03-19 09:46:45

2010-08-23 09:20:11

Linux命令

2019-04-01 06:37:12

R語言數(shù)據(jù)分析數(shù)據(jù)

2023-11-02 08:25:25

組件ReactUI

2022-10-13 11:48:37

Web共享機(jī)制操作系統(tǒng)

2013-05-23 11:57:42

以太網(wǎng)千兆網(wǎng)絡(luò)以太網(wǎng)發(fā)展

2022-07-04 07:09:55

架構(gòu)

2023-07-07 14:47:46

JavaScript技巧

2013-09-10 11:21:25

移動互聯(lián)網(wǎng)移動開發(fā)移動市場

2011-08-16 13:15:15

MongoDB

2021-11-12 10:05:19

跳表BAT面試

2023-12-23 11:15:25

2025-03-17 00:45:00

JavaScriptAPI頁面

2020-11-03 09:51:04

JavaScript開發(fā) 技巧

2017-11-07 21:58:25

前端JavaScript調(diào)試技巧

2024-05-15 18:59:01

JavaScript語言原型

2019-05-28 14:33:07

Javascript運(yùn)算符前端

2022-05-16 07:48:54

Python操作類型

2020-06-12 09:20:33

前端Blob字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號