Hiện nay thì JavaScript là một ngôn ngữ rất phổ biến và không thể thiếu trong các ứng dụng web. Môi trường JavaScript đã trở nên khổng lồ. Nó có hệ sinh thái của riêng nó với thư viện, frameworks, công cụ, quản lý package và các ngôn ngữ mới để biên dịch ra JavaScript như React, Vue,… Trong bài viết này mình giới thiệu một số khái niệm tăng khả năng JavaScript, sẽ giúp bạn dễ dàng làm việc với JavaScript cũng như dễ dàng tiếp cận với các thư viện, frameworks,…
Destructuring Assignment
Destructuring Assignment
là cú pháp cho phép lấy dữ liệu được lưu trữ bên trong Arrays hoặc Objects và gán chúng cho các biến riêng biệt
Ví dụ Destructuring Assignment
với Object
1 2 3 4 5 6 7 8 9 10 | <span class="token keyword">const</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'huynh'</span><span class="token punctuation">,</span> city<span class="token punctuation">:</span> <span class="token string">'Ha Noi'</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">,</span> city <span class="token punctuation">}</span> <span class="token operator">=</span> obj<span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> city<span class="token punctuation">)</span> <span class="token comment">// output tương ứng sẽ là: huynh, Ha Noi</span> |
Nếu chúng ta muốn khi lấy properties của object với tên khác, chúng ta có thể đặt lại bằng cách như sau:
1 2 3 4 5 6 7 8 9 10 | <span class="token keyword">const</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'huynh'</span><span class="token punctuation">,</span> city<span class="token punctuation">:</span> <span class="token string">'Ha Noi'</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> <span class="token punctuation">{</span> name<span class="token punctuation">:</span> myName<span class="token punctuation">,</span> city<span class="token punctuation">:</span> myCity <span class="token punctuation">}</span> <span class="token operator">=</span> obj<span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>myName<span class="token punctuation">,</span> myCity<span class="token punctuation">)</span> <span class="token comment">// output tương ứng sẽ là: huynh, Ha Noi</span> |
Destructuring Assignment còn được sử dụng lấy các tham số được truyền cho một hàm. Ở trong ReactJs cũng thường xuyên gặp và được sử dụng rất nhiều
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">const</span> obj <span class="token operator">=</span> <span class="token punctuation">{</span> name<span class="token punctuation">:</span> <span class="token string">'huynh'</span><span class="token punctuation">,</span> city<span class="token punctuation">:</span> <span class="token string">'Ha Noi'</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> <span class="token function-variable function">myInfor</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">{</span>name<span class="token punctuation">,</span> city<span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token operator">=></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 template-string"><span class="token string">`My information: </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> - </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>city<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">myInfor</span><span class="token punctuation">(</span>obj<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: My information: huynh - Ha Noi</span> |
Cú pháp Spread
Cú pháp spread
đơn giản được biểu diễn bởi dấu 3 chấm: …
Cú pháp Spread cho phép duyệt qua các phần tử và truyền vào phương thức như các đối số có nghĩa là cho phép chuyển đổi một chuỗi thành nhiều argument (trong trường hợp gọi với hàm) hoặc thành nhiều phần tử (cho array)
1 2 3 4 5 6 7 8 9 | <span class="token keyword">function</span> <span class="token function">sum</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">,</span> z<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> x <span class="token operator">+</span> y <span class="token operator">+</span> z<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> numbers <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> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token function">sum</span><span class="token punctuation">(</span><span class="token operator">...</span>numbers<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: 6</span> |
Cú pháp:
- Cho việc gọi hàm:
1 2 | <span class="token function">myFunction</span><span class="token punctuation">(</span><span class="token operator">...</span>iterableObj<span class="token punctuation">)</span><span class="token punctuation">;</span> |
- Cho array literals hoặc strings:
1 2 | <span class="token punctuation">[</span><span class="token operator">...</span>iterableObj<span class="token punctuation">,</span> <span class="token string">'4'</span><span class="token punctuation">,</span> <span class="token string">'five'</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">;</span> |
- Cho object literals:
1 2 | <span class="token keyword">let</span> objClone <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token operator">...</span>obj <span class="token punctuation">}</span><span class="token punctuation">;</span> |
Cú pháp Rest
Rest cho phép chúng ta biểu diễn số lượng đối số không xác định dưới dạng một mảng.
1 2 3 4 5 6 7 8 9 | <span class="token keyword">function</span> <span class="token function">sum</span><span class="token punctuation">(</span><span class="token operator">...</span>Args<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> Args<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">(</span><span class="token punctuation">(</span>previous<span class="token punctuation">,</span> current<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">return</span> previous <span class="token operator">+</span> current<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> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token function">sum</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 punctuation">;</span> <span class="token comment">// output: 6</span> |
Cú pháp:
1 2 3 4 | <span class="token keyword">function</span> <span class="token function">myFunction</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> <span class="token operator">...</span>Args<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// ...</span> <span class="token punctuation">}</span> |
Array Methods
Trong JavaScript thì để thao tác với mảng rất thuận tiện vì JavaScript đã cung cấp cho chúng ta các array methods giúp chúng ta thực hiện biến đổi dữ liệu theo cách chúng ta cần.
Trong bài viết này mình giới thiệu với các bạn một số phương thức.
Đầu tiên là: map, filter, reduce. Cả 3 phương thức này đều là những cách hữu ích để chuyển đổi một mảng hoặc trả về một giá trị và có nhiều bạn đã nhầm lẫn các phương thức này. Vậy các phương thức này hoạt động và khác nhau như thế nào
map
- Tạo ra một mảng mới với kết quả được xử lý trong hàm cho mỗi phần phần tử mảng
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 | <span class="token keyword">const</span> arr <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> newArr <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>el <span class="token operator">=></span> el <span class="token operator">*</span> <span class="token number">2</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>newArr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: [2, 4, 6]</span> |
filter
- Tạo ra một mảng chứa đầy tất cả các phần tử mảng qua điều kiện kiểm tra được xử lý trong hàm
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 8 | <span class="token keyword">const</span> arr <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> filtered <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span>el <span class="token operator">=></span> el <span class="token operator">===</span> <span class="token number">1</span> <span class="token operator">||</span> el <span class="token operator">===</span> <span class="token number">3</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>filtered<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [1, 3]</span> |
reduce
- Giảm mảng thành một giá trị duy nhất.
- Thực thi một hàm được cung cấp cho mỗi giá trị của mảng (từ trái sang phải)
- Giá trị trả về của hàm được lưu trữ trong bộ tích lũy
- Không thực thi hàm cho các phần tử mảng không có giá trị
- Phương thức này không thay đổi mảng ban đầu
1 2 3 4 5 6 7 | <span class="token keyword">const</span> arr <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> reduced <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">(</span><span class="token punctuation">(</span>total<span class="token punctuation">,</span> current<span class="token punctuation">)</span> <span class="token operator">=></span> total <span class="token operator">+</span> current<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>reduced<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: 6</span> |
find
- Trả về giá trị của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
- Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị đúng,
find ()
trả về giá trị của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về không xác định
1 2 3 4 5 6 7 8 | <span class="token keyword">const</span> arr <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 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 keyword">const</span> found <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span>el <span class="token operator">=></span> el <span class="token operator">></span> <span class="token number">3</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>found<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: 4</span> |
findIndex
- Trả về chỉ mục của phần tử đầu tiên trong một mảng qua điều kiện kiểm tra được xử lý trong hàm
- Nếu nó tìm thấy một phần tử mảng trong đó hàm trả về một giá trị thực,
findIndex ()
trả về chỉ mục của phần tử mảng đó (và không kiểm tra các giá trị còn lại). Nếu không, nó trả về -1
1 2 3 4 5 6 7 | <span class="token keyword">const</span> arr <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 number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">5</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 keyword">const</span> foundIndex <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">findIndex</span><span class="token punctuation">(</span>el <span class="token operator">=></span> el <span class="token operator">===</span> <span class="token number">2</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>foundIndex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: 1</span> |
indexOf
- Tìm kiếm mảng trong mảng theo điều kiện được chỉ định và trả về vị trí của nó.
- Tìm kiếm sẽ bắt đầu tại vị trí đã chỉ định hoặc ở đầu nếu không có vị trí bắt đầu nào được chỉ định và kết thúc tìm kiếm ở cuối mảng.
- Trả về -1 nếu không tìm thấy theo điều kiện. Nếu theo điều kiện item có mặt nhiều lần, phương thức
indexOf
trả về vị trí xuất hiện đầu tiên
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token keyword">const</span> arr <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 number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">5</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 keyword">const</span> foundIndex <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token number">2</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>foundIndex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output: 1</span> <span class="token keyword">const</span> foundIndex2 <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token number">2</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">// indexOf(giá trị muốn tìm, vị trí bắt đầu tìm)</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>foundIndex2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//output: 4</span> |
push
- Thêm phần tử mới vào cuối một mảng và trả về độ dài mới
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">let</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">0</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 number">4</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> pushed <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">5</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>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [0, 1, 2, 3, 4, 5]</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>pushed<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 6</span> |
pop
- Loại bỏ phần tử cuối cùng của một mảng và trả về phần tử đó.
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">let</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">0</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 number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> popped <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">pop</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>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [0, 1, 2, 3, 4]</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>popped<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 5</span> |
shift
- Loại bỏ phần tử đầu tiên của một mảng và trả về phần tử đầu tiên đó
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">let</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">0</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 number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> shifted <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">shift</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>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [1, 2, 3, 4, 5]</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>shifted<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 0</span> |
unshift
- Thêm các phần tử mới vào đầu một mảng và trả về độ dài mới.
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">let</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">0</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 number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">const</span> unshifted <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">unshift</span><span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">7</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>arr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [6, 7, 0, 1, 2, 3, 4, 5]</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>unshifted<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 8</span> |
Generators
- Generator là một object được trả về bởi một generator function, nó phù hợp với cả iterable protocol và iterator protocol.
- Generator function là một function, có khả năng tạm ngưng thực thi trước khi hàm kết thúc, và có thể tiếp tục chạy ở 1 thời điểm khác. Giá trị của biến trong các lần gọi được lưu lại trong các lần gọi tiếp theo
- Phương thức:
- Generator.prototype.next():
Trả về giá trị yielded, được khai báo qua câu lệnh yield. - Generator.prototype.return():
Trả về giá trị và kết thúc generator. - Generator.prototype.throw():
Throw lỗi vào generator (đồng thời kết thúc generator, trừ khi được bắt lại trong generator đó).
- Generator.prototype.next():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <span class="token keyword">function</span><span class="token operator">*</span> <span class="token function">generator</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">yield</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">yield</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token keyword">yield</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> gen <span class="token operator">=</span> <span class="token function">generator</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>gen<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 1</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>gen<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 2</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>gen<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 3</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>gen<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// undefined</span> |
Identity Operator (===) vs Equality Operator (==)
Toán tử == sẽ thực hiện chuyển đổi kiểu dữ liệu trước khi so sánh các giá trị trong khi toán tử === sẽ không thực hiện bất kỳ chuyển đổi loại nào trước khi so sánh
1 2 3 4 5 6 | console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">0</span> <span class="token operator">==</span> <span class="token string">'0'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// true</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">0</span> <span class="token operator">===</span> <span class="token string">'0'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// false</span> |
Callback Functions
- Là một function được truyền vào một function khác dưới dạng tham số, và được gọi trong function đó.
1 2 3 4 5 6 7 8 9 10 11 | <span class="token keyword">function</span> <span class="token function">hello</span><span class="token punctuation">(</span>name<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">'Hello '</span> <span class="token operator">+</span> name<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">call</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">callback</span><span class="token punctuation">(</span><span class="token string">'Huynh'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">call</span><span class="token punctuation">(</span>hello<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// output Hello Huynh</span> |
Tài liệu tham khảo
https://developer.mozilla.org/
Kết luận
Trong bài viết này mình đã giới thiệu tới các bạn một số khái niệm có thể giúp bạn tăng khả năng JavaScript của mình. Cảm ơn các bạn đã theo dõi bài viết