Trong bài viết này, Quản Trị Mạng sẽ chia sẻ 12 thủ thuật vô cùng hữu ích dành cho lập trình viên JavaScript. Những thủ thuật này sẽ giúp bạn giảm lượng code cũng như giúp code chạy tối ưu hơn. Mời các bạn cùng đón đọc!
1. Chuyển đổi sang boolean sử dụng toán tử !!
Đôi khi chúng ta cần kiểm tra xem một biến có tồn tại hoặc có giá trị hợp lệ hay không, để xem chúng như true value. Để xác định, bạn có thể sử dụng !!
(Double negation operator – toán tử phủ định kép) một !!variable
đơn giản, sẽ tự động chuyển đổi bất kỳ kiểu dữ liệu nào về boolean và biến này sẽ trả về false
khi nó có những giá trị như: 0; null; ""; undefined
hoặc NaN
, nếu không nó sẽ trả về true
. Để hiểu hơn về cách nó hoạt động, hãy xem qua ví dụ đơn giản sau:
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 ví dụ trên, nếu giá trị account.cash
lớn hơn 0 thì account.hasMoney
sẽ có giá trị là true.
2. Chuyển đổi sang number sử dụng toán tử +
Thủ thuật này rất tuyệt vời và dễ dàng thực hiện. Tuy nhiên, nó chỉ hoạt động với chuỗi số, ngược lại nó sẽ trả về NaN
(Not a Number – Không phải số). Hãy nhìn ví dụ sau:
function toNumber(strNumber) {
return +strNumber;
}
console.log(toNumber("1234")); // 1234
console.log(toNumber("ACB")); // NaN
Thủ thuật này cũng hoạt động với cả Date
và trong trường hợp này nó sẽ trả về số timestamp:
console.log(+new Date()) // 1461288164385
3. Rút gọn các điều kiện
Nếu bạn thấy một đoạn code giống như bên dưới:
if (conected) {
login();
}
Bạn có thể rút gọn nó bằng cách kết hợp một biến (sẽ được xác nhận) và một hàm sử dụng &&
(toán tử AND) ở giữa. Ví dụ, đoạn code trên có thể trở nên ngắn gọn hơn trong một dòng:
conected && login();
Bạn có thể làm tương tự để kiểm tra xem thuộc tính hay hàm có tồn tại trong object không. Tương tự như đoạn code bên dưới:
user && user.login();
4. Đặt giá trị mặc định sử dụng toán tử ||
Hiện tại, ES6 đã có tính năng tham 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 chèn giá trị mặc định như tham số thứ hai để sử dụng. Nếu tham số đầu tiên trả về false
thì tham số thứ hai sẽ được sử dụng như một giá trị mặc định. Hãy xem ví dụ sau:
function User(name, age) {
this.name = name || "Oliver Queen";
this.age = age || 27;
}
var user1 = new User();
console.log(user1.name); // Oliver Queen
console.log(user1.age); // 27
var user2 = new User("Barry Allen", 25);
console.log(user2.name); // Barry Allen
console.log(user2.age); // 25
5. Lưu trữ array.length trong vòng lặp
Thủ thuật này rất đơn giản và gây tác động lớn tới hiệu suất khi xử lý các mảng lớn trong vòng lặp. Về cơ bản, hầu hết mọi người thường sử dụng vòng lặp for
để duyệt qua mảng như sau:
for (var i = 0; i < array.length; i++) {
console.log(array[i]);
}
Nếu làm việc với các mảng nhỏ thì không sao, nhưng nếu bạn xử lý những mảng lớn thì đoạn code này sẽ tính toán lại kích cỡ của mảng sau mỗi lần lặp và điều đó sẽ gây một chút chậm trễ. Để tránh điều này, bạn có thể lưu trữ (cache) array.length trong một biến để dùng nó thay vì gọi array.length
trong mỗi lần lặp:
var length = array.length;
for (var i = 0; i < length; i++) {
console.log(array[i]);
}
Để làm nó trông gọn hơn, bạn chỉ việc viết lại như sau:
for (var i = 0, length = array.length; i < length; i++) {
console.log(array[i]);
}
6. Nhận diện các thuộc tính trong một object
Thủ thuật này vô cùng hữu ích khi bạn cần kiểm tra xem thuộc tính có tồn tại hay không và tránh chạy các hàm hay thuộc tính chưa được định nghĩa. Nếu định viết code chạy trên nhiều trình duyệt, bạn cũng có thể sử dụng kỹ thuật này.
Ví dụ, hãy tưởng tượng bạn cần viết code tương thích với trình duyệt Web cũ Internet Explorer 6 – IE6 và bạn muốn sử dụng document.querySelector()
để lấy một vài phần tử bằng ID của chúng. Tuy nhiên, trong trình duyệt IE6 hàm này không tồn tại. Để kiểm tra xem hàm có tồn tại hay không hãy sử dụng toán tử in
như ví dụ bên dưới:
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 document, chúng ta có thể sử dụng document.getElementById()
thay thế.
7. Lấy phần tử cuối cùng trong mảng
Array.prototype.slice(begin, end)
có thể cắt mảng khi bạn đặt tham số begin
và end
. Nhưng nếu bạn không nhập tham số end
, hàm này sẽ tự động đặt giá trị lớn nhất cho mảng. Chắc hẳn ít người biết được hàm này có thể chấp nhận giá trị âm và nếu bạn đặt tham số begin
là một số âm thì bạn sẽ lấy ra các phần tử cuối cùng từ mảng:
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]
8. Cắt ngắn mảng
Kỹ thuật này có thể khóa kích thước mảng, điều này rất hữu ích khi muốn xóa vài phần tử của mảng dựa trên số phần tử mà bạn thiết lập. Ví dụ, nếu bạn có một mảng 10 phần tử nhưng bạn chỉ muốn lấy 5 phần tử đầu tiên thì bạn có thể cắt ngắn mảng, làm nó nhỏ hơn bằng cách đặt array.length = 5
. Hãy xem ví dụ sau:
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]
9. Thay thế toàn bộ
Hàm String.replace()
cho phép sử dụng String và Regex (Biểu thức chính quy) để thay thế chuỗi, nhưng hàm này chỉ thay thế các chuỗi con xuất hiện đầu tiên. Bạn có thể giả lập một hàm replaceAll()
bằng cách sử dụng /g
ở cuối Regex:
var string = "john john";
console.log(string.replace(/hn/, "ana")); // "joana john"
console.log(string.replace(/hn/g, "ana")); // "joana joana"
10. Gộp các mảng
Nếu cần gộp hai mảng lại với nhau, bạn có thể sử dụng hàm Array.concat()
:
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ải là cách thích hợp nhất để gộp các mảng lớn vì nó sẽ tốn rất nhiều bộ nhớ do tạo ra một mảng mới. Trong trường hợp này, bạn có thể sử dụng Array.push.apply(arr1, arr2)
thay vì tạo ra một mảng mới, nó sẽ gộp mảng thứ hai vào mảng thứ nhất từ đó 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];
11. Chuyển NodeList thành mảng
Nếu bạn chạy hàm document.querySelectorAll("p")
, nó sẽ trả về một mảng chứa các phần tử DOM, NodeList object. Nhưng object này không có toàn bộ các hàm của mảng như: sort(); reduce(); map(); filter()
. Để có thể sử dụng các hàm này và nhiều hàm sẵn có khác của mảng, bạn cần chuyển NodeList thành mảng. Bạn chỉ cần dùng hàm: [].slice.call(elements)
:
var elements = document.querySelectorAll("p"); // NodeList
var arrayElements = [].slice.call(elements); // Now the NodeList is an array
var arrayElements = Array.from(elements); // This is another way of converting NodeList to Array
12. Trộn các phần tử trong mảng
Để xáo trộn các phần tử trong mảng mà không sử dụng các thư viện riêng như Lodash, bạn chỉ cần sử dụng thủ thuật sau:
var list = [1, 2, 3];
console.log(list.sort(function() {
return Math.random() - 0.5
})); // [2,1,3]
Kết luận
Hiện giờ bạn đã học được một vài thủ thuật JavaScript hữu ích mà phần lớn được sử dụng để giảm thiểu code và một vài thủ thuật được sử dụng trong các framework JavaScript phổ biến như Lodash, Underscore.js, Strings.js và nhiều framework khác.
Hy vọng các bạn sẽ thích bài viết này và nếu bạn còn biết những thủ thuật JavaScript hữu ích nào khác, hãy cho chúng tôi biết ở phần bình luận bên dưới nhé!
Không làm việc với Nữ Giới bao gồm cả chuyển giới
=> => Việc mua tài khoản đã cắn tiền về add lại thẻ thanh toán theo nguyên tắc lập trình nó không khác gì 1 tài khoản mới tạo ra bởi vậy tự tạo ra tài khoản Google ads đã căn tiền mảng khác rồi không phải remove thông tin thanh toán mà cứ thế để cài quảng cáo mảng VPCS sẽ giúp bạn có tỉ lệ sống cao hơn việc đi mua tài khoản Google ads có chi tiêu về add thẻ lại!=> => Tất cả các dịch vụ của tôi được bán thông hỗ trợ online teamview hoặc Ultral View qua máy tính các bạn - hỗ trợ trực tiếp trên máy tính của các bạn bởi vậy cần chuẩn bị máy tính ngon và các vấn đề câu hỏi liên quan trước khi quyết định mua sản phẩm dịch vụ chúng tôi cung cấp ! Các sản phẩm trên 500 triệu được gặp mặt trao đổi thương lượng nếu là tổ chức công ty !
=> => Tôi cung cấp khá đầy đủ các thông cho các bạn bởi vậy bớt hỏi những câu hỏi linh tinh như bán thì giao dịch như nào hay anh ở đâu em tới ! Nếu là 1 thằng không có kiến thức để làm thì sẽ không có những sườn thông tin nội dung đăng tải như trên để bán được cho tụi trong nghề đâu nhé !
Các lý do cần đọc trước khi quyết định liên hệ tôi
- Note : Mảng VPCS tức là các mảng bị Google cấm chạy chứ không phải là VPCS là đông Y, TPCN.. là VPCS ..=> Bitcoin.. tiền điện tử , bóng đá cá độ mới được gọi là VPCS còn đông Y , TPCN, hay thuốc sinh lý chạy bị Google khóa tức là bạn đang bị chạm tới điều kiện yêu cầu không cho phép khi chạy mảng liên quan đến sức khỏe ! Vậy làm thế nào để né nó ra hoặc chọn cách cào nào cho đúng với mảng bị giới hạn liên quan đến sức khỏe đó chứ không phải là mảng đó mảng VPCS ! Lên mạng search " Chính sách cá nhân hóa Google ads " để hiểu hơn về mảng liên quan đến sức khỏe => tức Google không cho phép nhà quảng cáo gợi lại nỗi đau của người bệnh liên tục....
- Tham gia group Mua bán Google Ads và Google Shopping :
https://www.facebook.com/groups/314513929300715
- Tham gia group mua bán cho thuê tài khoản BM Agency :
https://www.facebook.com/groups/1204318359703229
- AGOLA chỉ cung cấp dịch vụ không có dịch vụ tư vấn hiểu tới đâu bán tới đó !
- AGOLA ngừng cung cấp các gói dịch cho bọn có Slogan " Tuần đổi xe tháng mua nhà " hoặc liên quan !
- Các dịch vụ liên quan đến hướng dẫn : diễn ra từ 5-30 phút thông qua teamview hoặc ultral thời gian càng ngắn giá tiền càng cao nên các bạn đọc kỹ trước khi sử dụng
- Các sản phẩm dịch vụ không có thương thảo giá và cũng không có hỏi thêm
- Không làm việc với mấy thằng giao lưu với lũ suốt ngày dùng VPS remote này remote kia sock này sock kia đổi ngôn ngữ này đổi ngôn ngữ kia add page này sang page kia đổi đá cá kiểu con đà điều ... đây là một lũ ngu thời hiện đại khi bạn muốn vượt rào vòng đầu bạn đã gian lận thì vượt vào đít kèm với đó khả năng dính liên đơi nghi ngờ hành vi bất thường là rất cao nó như kiểu hành vi của bạn có tần xuất giống như hành vi của bọn gian lận khá nhiều nó cho bạn vào động cơ gian lận có nguy cơ nó sẽ pem luôn nhé ... và ti tỷ lý do khác nhé nếu bọn mày mà làm theo tụi nó lên cam được tao cho 20 triệu tiền cafe cà pháo
- Không bán vĩnh viễn mọi dịch vụ mua nhầm đòi đổi sang gói dịch vụ khác
- Thông tin bảo hành gần như không có nhưng cũng có một số dịch vụ có bảo hành đề nghị đọc kỹ trước khi quyết định mua
- Quyết định mua hàng là đồng ý các điều khoản mua bán và điều khoản không được lấy lại tiền và không bồi hoàn
- Mua hàng thì xin đọc kỹ điều khoản ở từng mô tả trước khi quyết định nhấc máy liên hệ ở thông tin của từng gói dịch vụ
- Mọi giao dịch đều được phải bắt buộc chụp màn hình chuyển khoản gửi vào Zalo
- Các đối tượng cố ý chuyển tiền gói này để trục lợi sử dụng gói khác đều được coi là hình vi lừa đảo ! Cố ý ghi nội dung hiểu lầm về chuyển tiền để đôi co đòi sử dụng gói dịch vụ khác cũng vậy !
- Tôi là dân khối A nên việc viết sai lỗi chính tả thì kệ mẹ tôi thích thì mua không thích thì đừng soi đi ra chỗ khác do tôi không có soát lại chính tả nên các bạn đọc thay vì thắc mắc thì thông cảm giùm tôi ! miễn sao tôi truyền tải thông tin bạn đọc bạn thấy hiểu được bạn sử dụng không được bạn tìm bên khác
- Tôi không làm việc với bọn cử nhân viên là các công ty Agency , truyền thông gọi hỏi dò hỏi luyên thuyên ! Nếu cố tình tôi sẽ dùng CRM Agency cấm lock chạy Ads vĩnh viễn khi nhìn thấy đuôi theo rõi của doanh nghiệp đó mà tôi đã gán.
- Tôi không làm việc với bọn nào thì tôi chạy tiền tỷ tôi tiêu tiền tỷ nhưng chạy demo trước nếu ngon thì vít lớn nhưng sau 3 ngày thuê thấy đéo thấy như cam kết về ngân sách
- Tôi không hợp tác ăn chia hay kiểu Win Win đôi bên có lợi
- Tất cả những câu hỏi khi gọi điện khiến tôi nghĩ rằng bạn chưa đọc kỹ thông tin trên website sẽ được tôi từ chối vô điều kiện
- Không làm việc các công ty có các nhân vật nổi tiếng trên các đài báo truyền hình bởi vậy bớt quảng cáo
- Các đối tượng cố tình lên mạng tìm kiểm thông tin tôi và không có trao đổi được tôi dùng Zalo : O9O9.456.866 gửi STK thông tin thanh toán của tôi qua zalo đó mà vẫn chuyển tiền vào tài khoản của tôi được coi là hình vi lừa đảo cố tình trọc phá và lợi dụng sử dụng lừa đảo để mong muốn sử dụng dịch vụ của tôi nhưng vì cấm nên phải làm vậy
- Kiến thức của đại đa số dân trên mạng không sai mà chỉ đúng với bọn gà mờ mà thôi kiểu như bạn học lớp 1 cô giáo nói 1 không trừ được cho 2 lên cấp 2 cô giáo nói 1 trừ được cho 2 ! Lúc đó cô giáo cấp 1 hay thầy giáo cấp 2 không nói ai đúng ai sai được mà tại thời điểm đó bạn thấy nó đúng còn khi đi sâu vào nó đéo đúng 😀 ! Cũng như việc tôi bán dịch vụ cho dân trong nghề việc tôi có bắt mấy thằng cấp 1 nuốt kiến thức chuyên sâu của cấp 2 là không được bởi vậy dân nào hiểu sẽ liên hệ mua chứ đừng kiểu lơ mở hỏi cho vui cửa vui nhà
- Không làm việc với bọn hở miệng ra là em từng có BM2500 với BM1000
- Không lamg việc với bọn hở mồm ra là fake mà đến cái via kiểm tra như thế nào là 1 cái via Việt hay via us... cũng đéo biết kiểm tra thế mà cứ đi nghe mấy thằng trên mạng Fake Ip , Fake đổi ngôn ngữ này ngôn ngữ kia ... tùm lum tà la login đổi via các kiểu con đa điểu rồi nghe thì vui tai mà làm cũng được không đéo có biết lý do chỉ có lý do vớ vẩn - Không tin tao đố bọn mày hỏi thử nó 1 câu via Việt là như thế nào đố thằng đó biết đó xàm xí - hay via việt là thông tin Việt Nam hahaha !
- Không làm việc với bọn nào thì đổi mạng 4g kết nối này kết nối kia lên cam có con cặc ấy mấy cái công nghệ cổ lỗ sĩ này bọn code tool click quảng cáo nó sài gần 10 năm nay rồi lòe dân gà hoài dần dần ko hiệu quả bọn nó ko dùng rồi lũ đó biến mất khỏi thị trường bán tài khoản
- Quyết tâm cấm log mọi thằng liên quan tới BM2500 vĩnh viễn hạn chế tài khoản quảng cáo liên đới từ 6 tới 2 năm kể cả cho kháng XMDT theo tút trên mạng
- Tiếp tục sắp tới sẽ thanh lọc toàn bộ Invoice
- Bọn mày nghĩ xem mẹ chúng nó giỏi vậy nhận hàng về mà chạy quảng cáo đi giàu hơn ko sao phải đi kiếm tiền dạy học ba láp ba xàm đó xem thấy quảng cáo của tụi đó trước đây chạy quảng cáo tràn lan quảng bá khóa học như đúng rồi giờ chạy đi ba láp ba xàm
- Ngoài ra tôi có cung cấp các gói dịch vụ hỗ trợ riêng cho kỹ thuật Viên của Google và Facebook mảng Support kỹ thuật ! Nếu bạn là nhân viên của Google muốn lên chức hay vượt qua các kỳ thi xát hạch của Google để tăng chức hãy liên hệ tôi !
Lựa chọn mua cách làm hay mua hoặc thuê tài khoản thì hợp lý
- Việc mua hay thuê tài khoản quảng cáo để hi vọng giúp bạn chạy được quảng cáo được ưu tiên hơn là không có còn việc bạn muốn sử dụng 1 loại tài khoản được quản lý bởi Agency thì tôi sẽ cung cấp cho bạn các dạng tài khoản có đầy Profile chứng mình tôi là Agency thực sự cho doanh nghiệp các bạn
- Làm việc với Agency tài khoản được cấp ra bởi Agency chỉ có giá trị với các đối tác lớn để xuất hóa đơn và hợp thức hóa thuế đầu vào đầu ra cho các nhãn hàng tổ chức truyền thông và các khiếu nại cũng như giải quyết hỗ trợ chạy quảng cáo sẽ được triển khai một cách bài bản và chuyên nghiệp hơn dưới dạng nhà thầu quảng cáo
- Làm việc được các dạng tài khoản được cung cấp bởi Agency chỉ có giá trị là Agency khi có hợp đồng văn bản hoặc giấy tờ chuyển tiền thanh toán với Google, Facebook thông qua séc hoặc thông qua một hình thức thanh toán được trao đổi trước đó giữa Facebook và Google
- Làm việc được với Agency thường áp dụng cho các thị trường lớn có dung lượng tiêu tiền lớn và các đối tác lớn
- Đi thuê tài khoản mà chịu mức thuê 5-10% rồi chưa kịp lời tài khoản lại die lỗ vẫn hoàn lỗ rồi không có lối thoát vẫn hoàn không có lối thoát => trắng tay khi 2 bên chia tay nhau nhận lại kết cục suy diễn vẫn chưa kiếm được bên nào uy tín để thuế vì vẫn thấy đối thủ hay người nào đó đang chạy được mình thì mãi vẫn loay hoay chết lên chết xuống