10個 JavaScript 開發(fā)小技巧

數(shù)組索引

考慮一個數(shù)組[10径玖、9栋烤、8、7挺狰、6],如果我們想將此數(shù)組的值分配給任何變量买窟,則我們的定位方法將是const a = array [0]丰泊。如果我們想分配多個變量,那么繼續(xù)這樣做將很繁瑣始绍。
代碼1: 舊代碼做法

    var array1 = [10, 9, 8, 7, 6]; 
    var x = array1[0]; 
    var y = array1[1]; 
    var z = array1[2]; 
    document.write("x = " + x + "<br>"); 
    document.write("y = " + y + "<br>"); 
    document.write("z = " + z + "<br>"); 
</script>

輸出:

x = 10
y = 9
z = 8
rest = 7, 6

因此瞳购,像這樣分配多個變量可以節(jié)省時間和代碼。但是亏推,應注意学赛,其余部分是剩余部分的集合數(shù)組年堆,而不是每個項目都單獨使用。

定義函數(shù)

想法是將一些常見或重復的任務放在一起并創(chuàng)建一個函數(shù)盏浇,這樣我們就可以調用該函數(shù)变丧,而不必為不同的輸入一次又一次地編寫相同的代碼。每個人都必須在JavaScript中使用過類似的功能绢掰。

  • 代碼1:以常規(guī)形式定義功能痒蓬。
<!DOCTYPE html> 
<html> 
<body> 
    <p>Usual function in JavaScript</p> 
    <p id="demo"></p> 
    <script> 
        function myFunction(p1, p2) { 
            return p1 * p2; 
        } 
        document.getElementById("demo").innerHTML 
                = myFunction(4, 3); 
</script> 
</body> 
</html>

輸出:

Usual function in JavaScript
12
  • 代碼2:還有另一種方法將函數(shù)視為變量,而不是一個非常有用的技巧滴劲,但仍然是新事物攻晒。將函數(shù)保持在變量中,它利用像這樣的箭頭函數(shù)班挖。
<!DOCTYPE html> 
<html> 
<body> 
    <p> 
        Function treated as 
        variable in JavaScript: 
    </p> 
    <p id="demo"></p> 
    <script> 
        var myFunction = (p1, p2) => { 
            return p1 * p2; 
        } 
        document.getElementById("demo") 
            .innerHTML = myFunction(4, 3); 
</script> 
</body> 
</html>

輸出:

Function treated as variable in JavaScript
12

在一行中定義功能

現(xiàn)在缀去,這個技巧真的很酷。如果你了解Python州丹,則可能知道lambda函數(shù)寓搬,該函數(shù)的行為與任意函數(shù)相同,并且用一行編寫末购。好吧破喻,我們不在JavaScript中使用lambda函數(shù),但是我們仍然可以編寫單行函數(shù)盟榴。

假設我們要計算兩個數(shù)字a和b的乘積曹质,我們可以在一行腳本中完成。我們不必專門編寫return語句擎场,因為這種定義方式已經意味著它將自行返回輸出羽德。

<!DOCTYPE html> 
<html> 
<body> 
    <p> 
        Function treated as  
        variable in JavaScript 
    </p> 
    <p id="demo"></p> 
    <script> 
        const productNum = (a, b) => a * b

        document.getElementById("demo") 
            .innerHTML = myFunction(4, 3); 
</script> 
</body> 
</html>

輸出:

Function treated as variable in JavaScript
12

布爾值

雖然每種編程語言都只有兩個布爾值True和False。JavaScript通過引入使用戶能夠創(chuàng)建bool的功能使它更進一步迅办。

與True和False不同宅静,它們通常分別稱為“ Truthy”和“ Falsy”。為避免混淆站欺,除0姨夹,F(xiàn)alse,NaN矾策,null磷账,“”之外的所有值均默認為Truthy。布爾的這種廣泛使用有助于我們有效地檢查狀況贾虽。

<script> 
    const a = !1; 
    const b = !!!0; 
    console.log(a); 
    console.log(b); 
</script>

輸出:

<script> 
  False
  True
</script>

過濾布爾值

有時我們可能希望過濾掉所有布爾值逃糟,例如從數(shù)組中說“ Falsy” 布爾值(0,F(xiàn)alse,NaN绰咽,null菇肃,“”),這可以通過結合使用map和filter函數(shù)來完成取募。在這里琐谤,它使用Boolean關鍵字過濾掉Falsy值。

<script> 
  <script> 
arrayToFilter 
    .map(item => { 
        // Item values 
    })

    .filter(Boolean); 
</script>
Input: [1, 2, 3, 0, "Hi", False, True]
Output: [1, 2, 3, "Hi", True]

創(chuàng)建完全空的對象

如果要求在JavaScript中創(chuàng)建一個空的對象矛辕,我們的第一個轉到方法將在花括號中使用并將其分配給變量笑跛。但這不是空白對象,因為它仍然具有JavaScript的對象屬性聊品,例如proto和其他方法飞蹂。

可以通過一種方法來創(chuàng)建沒有任何對象屬性的對象。為此翻屈,我們使用字典并將其proto定義為空值陈哑。

<script>    
  /* Using .create() method to create       
    a completely empty object */   
     let dict = Object.create(null);   
       // dict.__proto__ === "undefined"
        </script> 

除非用戶另行定義,否則此對象將沒有默認的proto或其他屬性伸眶。

截斷數(shù)組

<script> 
let arrayToTruncate = [10, 5, 7, 8, 3, 4, 6, 1, 0];

/* Specifying the length till where the 
   array should be truncated */
arrayToTruncate.length = 6;   
console.log(arrayToTruncate) 
</script>

輸出:如所見惊窖,我們必須知道要以這種方式截斷的數(shù)組的長度,否則將導致錯誤厘贼。此處的運行時間為O(k)界酒,其中k是將在數(shù)組中保留的元素數(shù)。

[10嘴秸、5毁欣、7、8岳掐、3凭疮、4]

合并對象

散布運算符(…)的引入使用戶可以輕松地合并到一個或多個對象,而先前通過創(chuàng)建一個單獨的函數(shù)來實現(xiàn)此操作可以實現(xiàn)合并串述。
代碼1:

<script> 
function mergeObjects(obj1, obj2) { 
    for (var key in obj2) { 
        if (obj2.hasOwnProperty(key)) obj1[key] = obj2[key]; 
    } 
    return obj1; 
} 
</script>

代碼2:通過使用擴展運算符执解,可以輕松實現(xiàn)上述任務,并且代碼也很清楚纲酗。

<script>     
const obj1 = {}; 
// Items inside the object     
const obj2 = {}; 
// Items inside the object     
const obj3 = {...obj1, ...obj2};
</script> 

條件檢查

檢查和遍歷條件是每種編程語言的重要組成部分衰腌。在JavaScript中,我們這樣做是:
代碼1:

<script> 
if (codition) { 
    doSomething(); 
} 
</script>

代碼2:但是觅赊,按位運算符的使用使檢查條件更加容易右蕊,并且使代碼僅一行:

<script> 
    condition && doSomething(); 
</script>

使用正則表達式替換所有字符

經常出現(xiàn)一種情況,每次出現(xiàn)一個字符或一個子字符串茉兰,但不幸的是.replace()方法僅替換一個出現(xiàn)的實例。我們可以通過將regex與.replace()方法配合使用來解決此問題欣簇。

<script> 
    var string = "GeeksforGeeks"; // Some string 
    console.log(string.replace(/eek/, "ool")); 
</script>

輸出:

“ GoolsforGools”
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末规脸,一起剝皮案震驚了整個濱河市坯约,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莫鸭,老刑警劉巖闹丐,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異被因,居然都是意外死亡卿拴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門梨与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堕花,“玉大人,你說我怎么就攤上這事粥鞋≡低欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵呻粹,是天一觀的道長壕曼。 經常有香客問我,道長等浊,這世上最難降的妖魔是什么腮郊? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮筹燕,結果婚禮上轧飞,老公的妹妹穿的比我還像新娘。我一直安慰自己庄萎,他們只是感情好踪少,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糠涛,像睡著了一般援奢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忍捡,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天集漾,我揣著相機與錄音,去河邊找鬼砸脊。 笑死具篇,一個胖子當著我的面吹牛,可吹牛的內容都是我干的凌埂。 我是一名探鬼主播驱显,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了埃疫?” 一聲冷哼從身側響起伏恐,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栓霜,沒想到半個月后翠桦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡胳蛮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年销凑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仅炊。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡斗幼,死狀恐怖,靈堂內的尸體忽然破棺而出茂洒,到底是詐尸還是另有隱情孟岛,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布督勺,位于F島的核電站渠羞,受9級特大地震影響,放射性物質發(fā)生泄漏智哀。R本人自食惡果不足惜次询,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷叫。 院中可真熱鬧屯吊,春花似錦、人聲如沸摹菠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次氨。三九已至蔽介,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煮寡,已是汗流浹背虹蓄。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幸撕,地道東北人薇组。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像坐儿,于是被迫代替她去往敵國和親律胀。 傳聞我的和親對象是個殘疾皇子宋光,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345