As we know that HTML is loaded and executed line by line. So, when the browser encounters a tag, it loads and executes the javascript code on the spot. This may slow down the page rendering speed and thus webpage will take more time to load.
<body> <!-- Other contents --> <!-- ... --> <script src="myscripts.js"></script> </body>Javascript is often used to manipulate DOM and add new functionality to the webpage. If tag is not added at end of the tag, DOM may not be ready by that time, thus preventing javascript to work on it, leading to unknown behaviors.
Do đó, chúng ta nên luôn thêm thẻ vào cuối thẻ để ngăn chặn các hành vi không xác định và giúp trang web tải nhanh hơn
Biến cục bộ phải được khai báo bằng từ khóa var, let hoặc const, nếu không chúng sẽ trở thành biến toàn cục
Chế độ nghiêm ngặt không cho phép các biến không được khai báo
Tuyên bố trên đầu trang
Thực hành mã hóa tốt là đặt tất cả các khai báo ở đầu mỗi tập lệnh hoặc hàm
Điều này sẽ
- Cung cấp mã sạch hơn
- Cung cấp một nơi duy nhất để tìm kiếm các biến cục bộ
- Làm cho nó dễ dàng hơn để tránh các biến toàn cầu (ngụ ý) không mong muốn
- Giảm khả năng khai báo lại không mong muốn
// Khai báo ngay từ đầu
let FirstName, lastName, price, discount, fullPrice;
// Sử dụng sau
firstName = "John";
lastName = "Doe";
giá = 19. 90;
giảm giá = 0. 10;
fullPrice = giá - chiết khấu;
Điều này cũng áp dụng cho các biến vòng lặp
for (cho i = 0; i < 5; i++) {
Khởi tạo biến
Đó là một thực hành mã hóa tốt để khởi tạo các biến khi bạn khai báo chúng
Điều này sẽ
- Cung cấp mã sạch hơn
- Cung cấp một nơi duy nhất để khởi tạo các biến
- Tránh các giá trị không xác định
// Khai báo và khởi tạo ngay từ đầu
let firstName = "";
let lastName = "";
let price = 0;
let discount = 0;
let fullPrice = 0,
const myArray = [];
const myObject = {};
Việc khởi tạo biến cung cấp ý tưởng về mục đích sử dụng (và kiểu dữ liệu dự định)
Khai báo các đối tượng với const
Khai báo các đối tượng với const sẽ ngăn chặn bất kỳ sự thay đổi loại ngẫu nhiên nào
Thí dụ
let xe = {type. "Fiat", mô hình. "500", màu. "white"};
car = "Fiat";
const xe = {type. "Fiat", mô hình. "500", màu. "white"};
car = "Fiat";
Khai báo mảng với const
Khai báo mảng với const sẽ ngăn chặn sự thay đổi loại ngẫu nhiên
Thí dụ
let cars = ["Saab", "Volvo", "BMW"];
cars = 3;
const cars = ["Saab", "Volvo", "BMW"];
cars = 3;
Không sử dụng đối tượng mới()
- Sử dụng "" thay vì new String()
- Sử dụng 0 thay vì new Number()
- Sử dụng ==0 thay vì ==1
- Sử dụng ==2 thay vì ==3
- Sử dụng ==4 thay vì ==5
- Sử dụng ==6 thay vì ==7
- Sử dụng ==8 thay vì ==9
Thí dụ
Tự mình thử »Cẩn thận với chuyển đổi loại tự động
JavaScript được gõ lỏng lẻo
Một biến có thể chứa tất cả các kiểu dữ liệu
Một biến có thể thay đổi kiểu dữ liệu của nó
Thí dụ
let x = "Xin chào";
x = 5; // changes typeof x to a number
Coi chừng các số có thể vô tình được chuyển đổi thành chuỗi hoặc var80 (Không phải là số)
Khi thực hiện các phép toán, JavaScript có thể chuyển đổi số thành chuỗi
Thí dụ
hãy x = 5 + 7; . valueOf() là 12, typeof x là một số
let x = 5 + "7"; . valueOf() là 57, typeof x là một chuỗi
let x = "5" + 7; . valueOf() là 57, typeof x là một chuỗi
let x = 5 - 7; . valueOf() là -2, typeof x là một số
let x = 5 - "7"; . valueOf() là -2, typeof x là một số
let x = "5" - 7; . valueOf() là -2, typeof x là một số
let x = 5 - "x"; . valueOf() là NaN, typeof x là một số
Trừ một chuỗi từ một chuỗi, không tạo ra lỗi nhưng trả về var80 (Không phải là số)
Sử dụng === So sánh
Toán tử so sánh == luôn chuyển đổi (thành các loại phù hợp) trước khi so sánh
Toán tử var83 buộc so sánh các giá trị và loại
Thí dụ
0 == "";
1 == "1"; // true
1 == true; // true
0 === "";
1 === "1"; // false
1 === true; // false
Sử dụng mặc định tham số
Nếu một hàm được gọi với một đối số bị thiếu, thì giá trị của đối số bị thiếu sẽ được đặt thành var84
Các giá trị không xác định có thể phá vỡ mã của bạn. Đó là một thói quen tốt để gán các giá trị mặc định cho các đối số
ECMAScript 2015 cho phép tham số mặc định trong định nghĩa hàm
hàm (a=1, b=1) { /*mã hàm*/ }
Đọc thêm về tham số hàm và đối số tại Tham số hàm
Kết thúc công tắc của bạn với mặc định
Luôn kết thúc các câu lệnh var85 của bạn bằng một ____186. Ngay cả khi bạn nghĩ rằng không cần nó
Thí dụ
chuyển đổi (Ngày mới(). getDay()) {
trường hợp 0.
ngày = "Chủ Nhật";
nghỉ;
trường hợp 1.
ngày = "Thứ Hai";
nghỉ;
trường hợp 2.
ngày = "Thứ Ba";
nghỉ;
trường hợp 3.
ngày = "Thứ Tư";
nghỉ;
trường hợp 4.
ngày = "thứ Năm";
nghỉ;
trường hợp 5.
ngày = "Thứ Sáu";
nghỉ;
trường hợp 6.
ngày = "Thứ Bảy";
nghỉ;
mặc định.
day = "Không xác định";
}
Tránh Số, Chuỗi và Boolean làm Đối tượng
Luôn coi số, chuỗi hoặc booleans là giá trị nguyên thủy. Không phải là đối tượng
Khai báo các loại này dưới dạng đối tượng, làm chậm tốc độ thực thi và tạo ra các tác dụng phụ khó chịu
Thí dụ
let x = "John";
let y = new String("John");
(x === y) // .
Hoặc thậm chí tệ hơn
Thí dụ
let x = new String("John");
let y = new String("John");
(x == y .
Tránh sử dụng eval()
Hàm var8 được sử dụng để chạy văn bản dưới dạng mã. Trong hầu hết các trường hợp, không cần thiết phải sử dụng nó