34 Kỹ thuật tối ưu code JavaScript 2021
- Tram Ho
Mở đầu
Gần đây mình có tìm hiểu những tips và tricks javascript , mục đích để giảm những đoạn code không thật sự cần thiết cũng như giúp code Javascript rõ ràng và tối ưu hơn.
Hôm nay, mình sẽ chia sẻ với các bạn về 1 bài viết khá hữu ích về 34 kỹ thuật mà lập trình viên Javascript nên biết trong năm 2021.
Chúng ta cùng bắt đầu nhé
1. If với nhiều điều kiện
Bạn có thể lưu nhiều giá trị trong mảng và sau đó sử dụng phương thức Include.
1 2 3 4 5 6 7 8 9 10 | <span class="token comment">//longhand</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>x <span class="token operator">===</span> <span class="token string">'abc'</span> <span class="token operator">||</span> x <span class="token operator">===</span> <span class="token string">'def'</span> <span class="token operator">||</span> x <span class="token operator">===</span> <span class="token string">'ghi'</span> <span class="token operator">||</span> x <span class="token operator">===</span><span class="token string">'jkl'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//logic</span> <span class="token punctuation">}</span> <span class="token comment">//shorthand</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'abc'</span><span class="token punctuation">,</span> <span class="token string">'def'</span><span class="token punctuation">,</span> <span class="token string">'ghi'</span><span class="token punctuation">,</span> <span class="token string">'jkl'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">includes</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//logic</span> <span class="token punctuation">}</span> |
2. If true … else
Với điều kiện if else đơn giản thì bạn có thể sử dụng các toán tử ternary để viết ngắn gọn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token keyword">if</span> <span class="token punctuation">(</span>x <span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> variable <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> variable <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">let</span> variable <span class="token operator">=</span> <span class="token punctuation">(</span>x <span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token operator">?</span> <span class="token boolean">true</span> <span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">;</span> <span class="token comment">//Hoặc</span> <span class="token keyword">let</span> variable <span class="token operator">=</span> x <span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>variable<span class="token punctuation">)</span><span class="token punctuation">;</span> |
3. Khai báo biến
Khi bạn muốn khai báo hai biến có giá trị chung hoặc kiểu chung, thì có thể viết ngắn gọn như sau.
1 2 3 4 5 6 7 | <span class="token comment">//Longhand </span> <span class="token keyword">let</span> variable1<span class="token punctuation">;</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token comment">//Shorthand </span> <span class="token keyword">let</span> variable1<span class="token punctuation">,</span> variable2 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> |
4. Kiểm tra Null, Undefined, Empty
Khi bạn tạo biến mới, và bạn muốn kiểm tra xem biến mà bạn đang tham chiếu đến, giá trị của nó có phải là empty hoặc undefined hay không.
JavaScript có một cách viết tắt để thực hiện được chức năng này.
1 2 3 4 5 6 7 | <span class="token comment">// Longhand</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1 <span class="token operator">!==</span> <span class="token keyword">null</span> <span class="token operator">||</span> variable1 <span class="token operator">!==</span> <span class="token keyword">undefined</span> <span class="token operator">||</span> variable1 <span class="token operator">!==</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> variable1<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> variable1 <span class="token operator">||</span> <span class="token string">''</span><span class="token punctuation">;</span> |
5. Kiểm tra giá trị Null và gán giá trị mặc định
1 2 3 4 | <span class="token keyword">let</span> variable1 <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">,</span> variable2 <span class="token operator">=</span> variable1 <span class="token operator">||</span> <span class="token string">'default value'</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"null check"</span><span class="token punctuation">,</span> variable2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output là "default value"</span> |
6. Kiểm tra giá trị Undefined và gán giá trị mặc định
1 2 3 4 | <span class="token keyword">let</span> variable1 <span class="token operator">=</span> <span class="token keyword">undefined</span><span class="token punctuation">,</span> variable2 <span class="token operator">=</span> variable1 <span class="token operator">||</span> <span class="token string">'default value'</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"null check"</span><span class="token punctuation">,</span> variable2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output là "default value"</span> |
7. Gán giá trị cho nhiều biến
Khi bạn xử lý nhiều biến và muốn gán các giá trị khác nhau cho các biến khác nhau, kỹ thuật viết tắt này rất hữu ích.
1 2 3 4 5 6 7 8 | <span class="token comment">//Longhand </span> <span class="token keyword">let</span> variable1<span class="token punctuation">,</span> variable2<span class="token punctuation">,</span> variable3<span class="token punctuation">;</span> variable1 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> variable2 <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> variable3 <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token comment">//Shorthand </span> <span class="token keyword">let</span> <span class="token punctuation">[</span>variable1<span class="token punctuation">,</span> variable2<span class="token punctuation">,</span> variable3<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> |
8. Toán tử gán
Chúng ta sẽ xử lý rất nhiều toán tử số học trong khi lập trình. Và đây là một kỹ thuật hữu ích để gán toán tử cho các biến JavaScript.
1 2 3 4 5 6 7 8 9 | variable1 <span class="token operator">=</span> variable1 <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> variable2 <span class="token operator">=</span> variable2 <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> variable3 <span class="token operator">=</span> variable3 <span class="token operator">*</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token comment">// Shorthand</span> variable1<span class="token operator">++</span><span class="token punctuation">;</span> variable2<span class="token operator">--</span><span class="token punctuation">;</span> variable3 <span class="token operator">*=</span> <span class="token number">10</span><span class="token punctuation">;</span> |
9. If Presence Shorthand
1 2 3 4 5 6 | <span class="token comment">// Longhand</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1 <span class="token operator">===</span> <span class="token boolean">true</span><span class="token punctuation">)</span> or <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1 <span class="token operator">!==</span> <span class="token string">""</span><span class="token punctuation">)</span> or <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1 <span class="token operator">!==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token comment">// Shorthand //Nó sẽ kiểm tra string empty,null và undefined</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1<span class="token punctuation">)</span> |
Đây là một cách viết tắt khá phổ biến.
Nhưng cần lưu ý Nếu variable1 có bất kỳ giá trị nào, nó sẽ vào logic sau vòng lặp if, nên toán tử này chủ yếu được sử dụng để kiểm tra null hoặc undefined.
10. Toán tử AND (&&) cho nhiều điều kiện
Nếu bạn chỉ gọi một hàm nếu biến là true thì bạn có thể sử dụng toán tử &&
1 2 3 4 5 6 7 | <span class="token comment">//Longhand </span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">callMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//Shorthand </span> variable1 <span class="token operator">&&</span> <span class="token function">callMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
11. Vòng lặp for shorthand
1 2 3 4 5 6 | <span class="token comment">// Longhand</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> testData<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token comment">// Shorthand</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token keyword">in</span> dataTest<span class="token punctuation">)</span> hoặc <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token keyword">of</span> testData<span class="token punctuation">)</span> |
12. Comparison Returns
Bạn cũng có thể sử dụng phép so sánh trong câu lệnh return.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <span class="token comment">// Longhand</span> <span class="token keyword">let</span> test<span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">checkReturn</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span>test <span class="token operator">===</span> <span class="token keyword">undefined</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> test<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">callMe</span><span class="token punctuation">(</span><span class="token string">'test'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token function">checkReturn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//output test</span> <span class="token keyword">function</span> <span class="token function">callMe</span><span class="token punctuation">(</span><span class="token parameter">val</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>val<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">function</span> <span class="token function">checkReturn</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> test <span class="token operator">||</span> <span class="token function">callMe</span><span class="token punctuation">(</span><span class="token string">'test'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
13. Arrow Function
Arrow Function là một tính năng mới được giới thiệu trong ES6. Nó giúp bạn tạo các hàm một cách gọn gàng hơn rất nhiều.
1 2 3 4 5 6 7 | <span class="token comment">//Longhand </span> <span class="token keyword">function</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> a <span class="token operator">+</span> b<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//Shorthand </span> <span class="token keyword">const</span> <span class="token function-variable function">add</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token operator">=></span> a <span class="token operator">+</span> b<span class="token punctuation">;</span> |
14. Short Function Calling
Chúng ta có thể sử dụng ternary operator để thực hiện chức năng này.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token comment">// Longhand</span> <span class="token keyword">function</span> <span class="token function">test1</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'test1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">test2</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'test2'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">var</span> test3 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>test3 <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">test1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token function">test2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token punctuation">(</span>test3 <span class="token operator">===</span> <span class="token number">1</span><span class="token operator">?</span> test1<span class="token operator">:</span>test2<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
15. Switch Shorthands
Bạn có thể lưu các điều kiện trong key-value objects và sử dụng dựa trên các điều kiện.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <span class="token comment">// Longhand</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">1</span><span class="token operator">:</span> <span class="token function">test1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">2</span><span class="token operator">:</span> <span class="token function">test2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">3</span><span class="token operator">:</span> <span class="token function">test</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token comment">// And so on...</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">var</span> data <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token number">1</span><span class="token operator">:</span> test1<span class="token punctuation">,</span> <span class="token number">2</span><span class="token operator">:</span> test2<span class="token punctuation">,</span> <span class="token number">3</span><span class="token operator">:</span> test <span class="token punctuation">}</span><span class="token punctuation">;</span> data<span class="token punctuation">[</span>something<span class="token punctuation">]</span> <span class="token operator">&&</span> data<span class="token punctuation">[</span>something<span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
16. Implicit Return
Với việc sử dụng Arrow Function, chúng ta có thể trả về giá trị trực tiếp mà không cần phải viết câu lệnh return.
1 2 3 4 5 6 7 | <span class="token comment">//Longhand </span> <span class="token keyword">function</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> a <span class="token operator">+</span> b<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//Shorthand </span> <span class="token keyword">const</span> <span class="token function-variable function">add</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token operator">=></span> a <span class="token operator">+</span> b<span class="token punctuation">;</span> |
17. Lũy thừa cơ số thập phân
1 2 3 4 5 6 | <span class="token comment">// Longhand</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">100</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">1e2</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> |
18. Default Parameter Values
ES6 cho phép đặt giá trị mặc định cho tham số khi khai báo hàm.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token comment">//Longhand</span> <span class="token keyword">function</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token parameter">variable1<span class="token punctuation">,</span> variable2</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable1 <span class="token operator">===</span> <span class="token keyword">undefined</span><span class="token punctuation">)</span> variable1 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable2 <span class="token operator">===</span> <span class="token keyword">undefined</span><span class="token punctuation">)</span> variable2 <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token keyword">return</span> variable1 <span class="token operator">+</span> variable2<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//shorthand</span> <span class="token function-variable function">add</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">variable1 <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> variable2 <span class="token operator">=</span> <span class="token number">2</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>variable1 <span class="token operator">+</span> variable2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//output: 3</span> |
19. Toán tử Spread
1 2 3 4 5 6 7 8 9 10 11 | <span class="token comment">//longhand</span> <span class="token comment">// joining arrays dùng concat</span> <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">4</span> <span class="token punctuation">,</span><span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">concat</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//shorthand</span> <span class="token comment">// joining arrays</span> <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">4</span> <span class="token punctuation">,</span><span class="token number">5</span> <span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token operator">...</span>data<span class="token punctuation">]</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>array1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [ 4, 5, 6, 1, 2, 3]</span> |
Clone array dùng spread
1 2 3 4 5 6 7 8 9 10 11 | <span class="token comment">//longhand</span> <span class="token comment">// cloning arrays</span> <span class="token keyword">const</span> array1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array2 <span class="token operator">=</span> array1<span class="token punctuation">.</span><span class="token function">slice</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//shorthand</span> <span class="token comment">// cloning arrays</span> <span class="token keyword">const</span> array1 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array2 <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span>array1<span class="token punctuation">]</span><span class="token punctuation">;</span> |
20. Template Literals
Thay vì sử dụng nhiều toán tử + để nối nhiều biến trong một string thì bạn có thể sử dụng Template Literals
1 2 3 4 5 6 | <span class="token comment">//longhand</span> <span class="token keyword">const</span> welcome <span class="token operator">=</span> <span class="token string">'Hi '</span> <span class="token operator">+</span> variable1 <span class="token operator">+</span> <span class="token string">' '</span> <span class="token operator">+</span> variable2 <span class="token operator">+</span> <span class="token string">'.'</span> <span class="token comment">//shorthand</span> <span class="token keyword">const</span> welcome <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">Hi </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>variable1<span class="token interpolation-punctuation punctuation">}</span></span> <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>variable2<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span> |
21. Multi-line String
Khi bạn xử lý một chuỗi nhiều dòng trong code, bạn có thể thực hiện cách này:
1 2 3 4 5 6 7 8 | <span class="token comment">//longhand</span> <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token string">'string text line 1\n'</span> <span class="token operator">+</span> <span class="token string">'string text line 2'</span> <span class="token comment">//shorthand</span> <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">string text line 1 string text line 2</span><span class="token template-punctuation string">`</span></span> |
22. Gán thuộc tính Object
1 2 3 4 5 6 7 8 | <span class="token keyword">let</span> variable1 <span class="token operator">=</span> <span class="token string">'a'</span><span class="token punctuation">;</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> <span class="token string">'b'</span><span class="token punctuation">;</span> <span class="token comment">//Longhand </span> <span class="token keyword">let</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span>variable1<span class="token operator">:</span> variable1<span class="token punctuation">,</span> variable2<span class="token operator">:</span> variable2<span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token comment">//Shorthand </span> <span class="token keyword">let</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span>variable1<span class="token punctuation">,</span> variable2<span class="token punctuation">}</span><span class="token punctuation">;</span> |
23. Chuyển String thành Number
1 2 3 4 5 6 7 8 | <span class="token comment">//Longhand </span> <span class="token keyword">let</span> variable1 <span class="token operator">=</span> <span class="token function">parseInt</span><span class="token punctuation">(</span><span class="token string">'456'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> <span class="token function">parseFloat</span><span class="token punctuation">(</span><span class="token string">'456.9'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Shorthand </span> <span class="token keyword">let</span> variable1 <span class="token operator">=</span> <span class="token operator">+</span><span class="token string">'456'</span><span class="token punctuation">;</span> <span class="token keyword">let</span> variable2 <span class="token operator">=</span> <span class="token operator">+</span><span class="token string">'456.9'</span><span class="token punctuation">;</span> |
24. Destructuring Assignment
1 2 3 4 5 6 7 8 | <span class="token comment">//longhand</span> <span class="token keyword">const</span> variable1 <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>variable1<span class="token punctuation">;</span> <span class="token keyword">const</span> variable2 <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>variable2<span class="token punctuation">;</span> <span class="token keyword">const</span> variable2 <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">.</span>variable3<span class="token punctuation">;</span> <span class="token comment">//shorthand</span> <span class="token keyword">const</span> <span class="token punctuation">{</span> variable1<span class="token punctuation">,</span> variable2<span class="token punctuation">,</span> variable3 <span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>data<span class="token punctuation">;</span> |
25 Array.find
Khi bạn có một mảng các đối tượng và bạn muốn tìm object cụ thể theo thuộc tính object thì có thể sử dụng phương thức find()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> type<span class="token operator">:</span> <span class="token string">'test1'</span><span class="token punctuation">,</span> name<span class="token operator">:</span> <span class="token string">'abc'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> type<span class="token operator">:</span> <span class="token string">'test2'</span><span class="token punctuation">,</span> name<span class="token operator">:</span> <span class="token string">'cde'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> type<span class="token operator">:</span> <span class="token string">'test1'</span><span class="token punctuation">,</span> name<span class="token operator">:</span> <span class="token string">'fgh'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token keyword">function</span> <span class="token function">findtest1</span><span class="token punctuation">(</span><span class="token parameter">name</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> data<span class="token punctuation">.</span>length<span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>type <span class="token operator">===</span> <span class="token string">'test1'</span> <span class="token operator">&&</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>name <span class="token operator">===</span> name<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> data<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">//Shorthand</span> filteredData <span class="token operator">=</span> data<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token parameter">data</span> <span class="token operator">=></span> data<span class="token punctuation">.</span>type <span class="token operator">===</span> <span class="token string">'test1'</span> <span class="token operator">&&</span> data<span class="token punctuation">.</span>name <span class="token operator">===</span> <span class="token string">'fgh'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>filteredData<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// { type: 'test1', name: 'fgh' }</span> |
26 Điều kiện Lookup
Ví dụ, nếu bạn muốn kiểm tra 1 biến type và dựa trên biến type sẽ gọi các method khác nhau.
Bạn có thể sử dụng nhiều else if
hoặc sử dụng switch
, nhưng có một cách ngắn gọn khác để thực hiện việc này
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <span class="token comment">// Longhand</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>type <span class="token operator">===</span> <span class="token string">'test1'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">test1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>type <span class="token operator">===</span> <span class="token string">'test2'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">test2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>type <span class="token operator">===</span> <span class="token string">'test3'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">test3</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>type <span class="token operator">===</span> <span class="token string">'test4'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">test4</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Invalid value '</span> <span class="token operator">+</span> type<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Shorthand</span> <span class="token keyword">var</span> types <span class="token operator">=</span> <span class="token punctuation">{</span> test1<span class="token operator">:</span> test1<span class="token punctuation">,</span> test2<span class="token operator">:</span> test2<span class="token punctuation">,</span> test3<span class="token operator">:</span> test3<span class="token punctuation">,</span> test4<span class="token operator">:</span> test4 <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">var</span> func <span class="token operator">=</span> types<span class="token punctuation">[</span>type<span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">(</span><span class="token operator">!</span>func<span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Invalid value '</span> <span class="token operator">+</span> type<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">func</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
27. Bitwise IndexOf
Hàm indexOf()
được sử dụng để truy xuất vị trí của mục bạn đang tìm kiếm trong 1 mảng. Nếu mục không được tìm thấy sẽ trả về giá trị -1.
Và trong JavaScript, 0 được coi là falsy
, còn các số lớn hơn hoặc nhỏ hơn 0 được coi là truthy
Toán tử bitwise (~) sẽ trả về giá trị truthy
cho bất kỳ giá trị nào ngoại trừ -1
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token comment">//longhand</span> <span class="token keyword">if</span><span class="token punctuation">(</span>arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// item found </span> <span class="token punctuation">}</span> <span class="token keyword">if</span><span class="token punctuation">(</span>arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// item not found</span> <span class="token punctuation">}</span> <span class="token comment">//shorthand</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">~</span>arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// item found</span> <span class="token punctuation">}</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token operator">~</span>arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// item not found</span> <span class="token punctuation">}</span> |
28. Object.entries()
Tính năng này giúp chuyển đổi object thành một array object.
1 2 3 4 5 6 7 8 9 10 11 | <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">{</span> test1<span class="token operator">:</span> <span class="token string">'abc'</span><span class="token punctuation">,</span> test2<span class="token operator">:</span> <span class="token string">'cde'</span><span class="token punctuation">,</span> test3<span class="token operator">:</span> <span class="token string">'efg'</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">entries</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>array<span class="token punctuation">)</span><span class="token punctuation">;</span> Output<span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token string">'test1'</span><span class="token punctuation">,</span> <span class="token string">'abc'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'test2'</span><span class="token punctuation">,</span> <span class="token string">'cde'</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'test3'</span><span class="token punctuation">,</span> <span class="token string">'efg'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> |
29. Object.entries()
Đây cũng là một tính năng mới được giới thiệu trong ES8 thực hiện chức năng tương tự như Object.entries (), nhưng không có phần key:
1 2 3 4 5 6 7 8 | <span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">{</span> test1<span class="token operator">:</span> <span class="token string">'abc'</span><span class="token punctuation">,</span> test2<span class="token operator">:</span> <span class="token string">'cde'</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">const</span> array <span class="token operator">=</span> Object<span class="token punctuation">.</span><span class="token function">values</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>array<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">/** Output: [ 'abc', 'cde'] **/</span> |
30. Double Bitwise
Lưu ý là phương pháp này chỉ hoạt động đối với số nguyên 32 bit
1 2 3 4 5 6 | <span class="token comment">// Longhand</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span><span class="token number">1.9</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token number">1</span> <span class="token comment">// true</span> <span class="token comment">// Shorthand</span> <span class="token operator">~</span><span class="token operator">~</span><span class="token number">1.9</span> <span class="token operator">===</span> <span class="token number">1</span> <span class="token comment">// true</span> |
31. Lặp lại một chuỗi nhiều lần
1 2 3 4 5 6 7 8 9 10 | <span class="token comment">//longhand </span> <span class="token keyword">let</span> test <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">5</span><span class="token punctuation">;</span> i <span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> test <span class="token operator">+=</span> <span class="token string">'test '</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>str<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// test test test test test </span> <span class="token comment">//shorthand </span> <span class="token string">'test '</span><span class="token punctuation">.</span><span class="token function">repeat</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
32. Tìm số max và min trong array
1 2 3 4 | <span class="token keyword">const</span> array <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span>…array<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 3</span> Math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span>…array<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 1</span> |
33. Lấy character từ string
1 2 3 4 5 6 7 8 9 | <span class="token keyword">let</span> str <span class="token operator">=</span> <span class="token string">'abc'</span><span class="token punctuation">;</span> <span class="token comment">//Longhand </span> str<span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// c</span> <span class="token comment">//Shorthand </span> <span class="token constant">L</span>ưu ý<span class="token operator">:</span> <span class="token constant">N</span>ếu bạn biết index của mảng thì có thể sử dụng trực tiếp index được chèn ký tự<span class="token punctuation">.</span> <span class="token constant">N</span>ếu index sai nó sẽ <span class="token keyword">throw</span> <span class="token keyword">undefined</span> str<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// c</span> |
34. Power Shorthand
Cách viết tắt cho hàm lũy thừa.
1 2 3 4 5 6 | <span class="token comment">//longhand</span> Math<span class="token punctuation">.</span><span class="token function">pow</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 8</span> <span class="token comment">//shorthand</span> <span class="token number">2</span><span class="token operator">**</span><span class="token number">3</span> <span class="token comment">// 8</span> |