12 Mẹo sử dụng Javascsript Cực kỳ hữu ích

Ngày đăng: 18/12/2019   -    Cập nhật: 24/04/2020
Trong bài viết này mình sẽ chia sẻ 12 Mẹo sử dụng Javascript cực kỳ hữu ích. Những mẹo này sẽ giúp bạn code Javascript ngắn hơn, tối ưu hóa hơn.


12 Mẹo sử dụng Javascript

12 Mẹo sử dụng Javascript

 

Hãy bắt đầu nào!


Mẹo #1: Chuyển đổi sang Boolean bằng toán tử !!



Đôi khi chúng ta cần kiểm tra xem một số biến có tồn tại hay là giá trị của nó có hợp lệ hay không, để có thể xem nó là giá trị thực (true value).


Để thực hiện loại xác nhận này, bạn có thể sử dụng toán tử !! (Toán tử phủ định kép) đơn giản như là: !!variable


Nó sẽ tự động chuyển đổi bất kỳ loại dữ liệu nào thành boolean:



  • Biến này sẽ trả về false chỉ khi nó có một số giá trị sau: 0, null, "", undefined hoặc NaN
  • Nếu không nó sẽ trả lại true.


Để hiểu nó trong thực tế, hãy xem ví dụ đơn giản này:


function Account(cash) {
    this.cash = cash;
    this.hasMoney = !!cash;
}

var account = new Account(100.50);
console.log(account.cash); // 100.50
console.log(account.hasMoney); // true

var emptyAccount = new Account(0);
console.log(emptyAccount.cash); // 0
console.log(emptyAccount.hasMoney); // false


Trong trường hợp này, nếu giá trị account.cash lớn hơn 0, acount.hasMoney sẽ true.


Mẹo #2: Chuyển đổi thành number sử dụng toán tử +



Mẹo này rất là tuyệt vời! Và nó rất đơn giản để thực hiện, nhưng nó chỉ hoạt động với số ở dạng chuỗi (vd: "10", "20" ....), nếu không nó sẽ trả về NaN (Không phải là số).


Hãy xem ví dụ này:



function toNumber(strNumber) {
    return +strNumber;
}

console.log(toNumber("1234")); // 1234
console.log(toNumber("ACB")); // NaN

// Toán tử + cũng hoạt động với định dạng Date
// Trong trường hợp này nó sẽ trả về timestamp
console.log(+new Date()) // 1461288164385


Mẹo #3: Sử dụng toán tử &&



Nếu bạn nhìn thấy một đoạn code tương tự:


if (conected) {
    login();
}


Bạn có thể rút ngắn nó bằng cách sử dụng kết hợp một biến (sẽ được xác minh) và một hàm sử dụng toán tử && (AND).


Ví dụ: Đoạn code trên có thể viết thành 1 dòng:



conected && login();


Bạn có thể làm tương tự để kiểm tra xem một số thuộc tính hoặc function có tồn tại trong đối tượng hay không.


Tương tự như mã dưới đây:



user && user.login();


Mẹo #4: Thiết lập giá trị mặc định sử dụng toán tử ||



Hiện tại, trong ES6 có tính năng đối số mặc định.


Để mô phỏng tính năng này trong các trình duyệt cũ, bạn có thể sử dụng || (Toán tử OR) bằng cách đặt giá trị mặc định làm tham số thứ hai.


Nếu tham số đầu tiên trả về false, tham số thứ hai sẽ được sử dụng làm giá trị mặc định.


Hãy xem ví dụ này:



function User(name, age) {
    this.name = name || "NIIT";
    this.age = age || 27;
}

var user1 = new User();
console.log(user1.name); // NIIT
console.log(user1.age); // 27

var user2 = new User("Doanh", 25);
console.log(user2.name); // Doanh
console.log(user2.age); // 25


Như bạn thấy đấy, ở user1, chúng ta tạo đối tượng nhưng không truyền đối số. Do đó đối tượng này sẽ lấy giá trị mặc định.


Mẹo #5: Nhớ tạm array.length trong vòng lặp



Mẹo này rất đơn giản và gây ra tác động rất lớn đến hiệu suất khi xử lý các mảng lớn trong một vòng lặp.


Về cơ bản, hầu hết mọi người đều viết điều này đồng bộ để lặp lại một mảng:



for(var i = 0; i < array.length; i++) {
    console.log(array[i]);
}


Nếu bạn làm việc với các mảng nhỏ - nó cũng ổn, nhưng nếu bạn xử lý các mảng lớn, code này sẽ tính toán lại kích thước của mảng trong mỗi lần lặp của vòng lặp này và nó làm giảm hiệu suất.


Để tránh điều này, bạn có thể nhớ tạm array.length trong một biến để sử dụng nó thay vì gọi lại array.length mỗi lần lặp:



var length = array.length;
for(var i = 0; i < length; i++) {
    console.log(array[i]);
}



Để làm gọn gàng hơn, chỉ cần viết code như thế này:


for(var i = 0, length = array.length; i < length; i++) {
    console.log(array[i]);
}


Mẹo #6: Detect thuộc tính trong đối tượng



Thủ thuật này rất hữu ích khi bạn cần kiểm tra nếu một số thuộc tính có tồn tại hay không để tránh chạy các function hoặc thuộc tính không xác định.


Nếu bạn đang dự định viết code cross-platform, có lẽ bạn cũng sẽ sử dụng kỹ thuật này.


Ví dụ:



Hãy để tưởng tượng rằng bạn cần viết code tương thích với Internet Explorer 6 cũ và bạn muốn sử dụng document.querySelector(), để lấy một số phần tử theo id của chúng.

Tuy nhiên, trong trình duyệt này, chức năng này không tồn tại, vì vậy để kiểm tra sự tồn tại của chức năng này, bạn có thể sử dụng toán tử in.

 
Hãy xem ví dụ này:


if ('querySelector' in document) {
    document.querySelector("#id");
} else {
    document.getElementById("id");
}

 
Trong trường hợp này, nếu không có hàm querySelector trong đối tượng document, chúng ta có thể sử dụng hàm khác để dự phòng như: document.getElementById()

 

Mẹo #7: Lấy item cuối cùng của một mảng



Array.prototype.slice(begin, end) có khả năng cắt các mảng khi bạn đặt các đối số bắt đầu và kết thúc.


Nhưng nếu bạn không đặt đối số end, hàm này sẽ tự động cắt từ begin đến cuối mảng.


Mình nghĩ rằng ít người biết hàm này có thể chấp nhận các giá trị âm và nếu bạn đặt số âm làm đối số begin, bạn sẽ nhận được các phần tử cuối cùng từ mảng:


Ví dụ:



var array = [1,2,3,4,5,6];
console.log(array.slice(-1)); // [6]
console.log(array.slice(-2)); // [5,6]
console.log(array.slice(-3)); // [4,5,6]



Mẹo #8: Cắt ngắn mảng



Kỹ thuật cắt ngắn mảng trong Javascript này có thể khóa kích thước mảng, cách này rất hữu ích để xóa một số phần tử của mảng dựa trên số lượng phần tử bạn muốn đặt.


Ví dụ: Nếu bạn có một mảng có 10 phần tử, nhưng bạn chỉ muốn để lại năm phần tử đầu tiên, bạn có thể cắt bớt mảng đó, làm cho nó nhỏ hơn bằng cách đặt lại độ dài của mảng cho nó: array.length = 5


Hãy xem ví dụ:



var array = [1,2,3,4,5,6];
console.log(array.length); // 6
array.length = 3;
console.log(array.length); // 3
console.log(array); // [1,2,3]



Mẹo #9: Thay thế tất cả (ReplaceAll)





Hàm String.replace() cho phép sử dụng String và Biểu thức chính quy (Regex) để thay thế các chuỗi, thực chất hàm này chỉ thay thế lần xuất hiện đầu tiên.


Nhưng bạn vẫn có thể sử dụng replace() mô phỏng hàm replaceAll() bằng cách sử dụng /g ở cuối biểu thức chính quy:



var string = "Xinh lung linh";
console.log(string.replace(/nh/, "ng")); // "Xing lung linh"
console.log(string.replace(/nh/g, "ng")); // "Xing lung ling"



Mẹo #10: Hợp nhất Mảng



Nếu bạn cần hợp nhất hai mảng, bạn có thể sử dụng hàm Array.concat() như thế này:


var array1 = [1,2,3];
var array2 = [4,5,6];
console.log(array1.concat(array2)); // [1,2,3,4,5,6];


Tuy nhiên, hàm này không phù hợp nhất để hợp nhất các mảng lớn vì nó sẽ tiêu tốn rất nhiều bộ nhớ vì nó sẽ tạo một mảng mới.


Trong trường hợp này, bạn có thể sử dụng Array.push.apply(Array1, Array2)


Thay vì tạo ra một mảng mới - nó sẽ hợp nhất mảng thứ hai vào mảng đầu tiên (làm giảm việc sử dụng bộ nhớ):



var array1 = [1,2,3];
var array2 = [4,5,6];
console.log(array1.push.apply(array1, array2)); // [1,2,3,4,5,6];


Mẹo #11: Chuyển đổi NodeList thành Arrays



Nếu bạn chạy hàm document.querySelectorAll('p'), nó có thể sẽ trả về một mảng các phần tử DOM, đối tượng NodeList.


Nhưng đối tượng này không sử dụng được các hàm hữu ích cho mảng, như: sort(), less(), map(), filter().


Để kích hoạt các hàm này và nhiều hàm khác, bạn cần chuyển đổi NodeList thành Arrays.


Để chạy kỹ thuật này, chỉ cần sử dụng: [].slice.call(elements)



var elements = document.querySelectorAll("p"); // NodeList
var arrayElements = [].slice.call(elements); // Bây giờ NodeList là một array
var arrayElements = Array.from(elements); // Một cách khác chuyển đổi NodeList thành Array


Mẹo #12: Xáo trộn phần tử của mảng



Để xáo trộn các phần tử mảng mà không sử dụng bất kỳ thư viện bên ngoài nào như Lodash, chỉ cần sử dụng mẹo này:


var list = [1,2,3];
console.log(list.sort(function() { Math.random() - 0.5 })); // [2,1,3]



Chúc mừng bạn đã biết thêm nhiều mẹo sử dụng Javascript



Trên đây mình đã giúp bạn biết được một số Mẹo sử dụng Javascript hữu ích, phần lớn được sử dụng để tối ưu code JavaScript và một số thủ thuật này được sử dụng nhiều trong các framework phổ biến như Lodash, Underscore.js, String.js, ....


Còn bạn nào muốn đi sâu hơn nữa thì có thể bắt đầu với Khóa học Lập trình Fullstack tại NIIT - ICT Hà Nội:





Trong Khóa học này các bạn cũng sẽ được hướng dẫn kỹ càng và hiểu rõ bản chất của Javascript để từ đó vận dụng trong lập trình.


Mình hy vọng bạn thích bài viết này và nếu bạn biết các mẹo JS hữu ích khác của Javascript, vui lòng để lại bình luận bên dưới để chia sẻ cho mọi người nhé.


---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150 
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php

Bình luận Facebook
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!