Một vài lưu ý lặt vặt khi lập trình Javascript

Lập trình

Javascript là một ngôn ngữ lập trình cực kỳ dễ học. Đây là loại ngôn ngữ free-typed nên nó dễ để bắt đầu, code nhanh vì nó không cần định nghĩa trước các biến. Hãy xem các loại Javascript Gotchas cực kỳ thú vị sau đây.

Như các bạn thấy đó, Javascript là một ngôn ngữ cực kỳ thân thiện đối với các lập trình viên. Nó rất dễ viết, dễ hiểu, free-typed nên các bạn không cần định nghĩa trước các biến và kiểu dữ liệu. Nếu bạn đang lập trình trên Java hoặc C++, đảm bảo các bạn sẽ bắt đầu cực nhanh với Javascript.

Javascript có rất nhiều gotchas rất thú vị. Khi lập trình Javascript, các bạn sẽ gặp các vấn đề rất hài hước sau đây:

Return

Trả về giá trị trong ngôn ngữ Javascript sẽ như thế này này:

return 
{
   me: "Jam"
}
// cách trả về sai. Javascript không trả về thế này!

Cách làm đúng thế này:

// cách làm đúng
return "A";
return { mode: "driver"};
// hoặc 
return [
  "me", "you", "we"
];

Switch và break

Không giống như các ngôn ngữ khác, khi bạn lập trình với Javascript thì chú ý các điều sau đây:

// sai
switch ( condition ) {
   case 0: text = "A";
   case 1: text = "B";
}

Như thế này mới đúng:

// sai
switch ( condition ) {
   case 0: text = "A"; break;
   case 1: text = "B"; break;
   default: text = "C";
}

parseInt

Hàm này convert một kiểu string sang kiểu số. Tuy nhiên hàm này có biến số nên các bạn cần để ý, IE9 và một số trình duyệt cũ sẽ cho ra kết quả khác nhau:

// sai
parseInt("010"); // ra 10
parseInt("010"); // IE 9 ra 8

Đúng

parseInt("010", 10); // cùng ra kết quả 10

Hàm Date()

Giống như Java, hàm Date() trả về một cơ số Object nhưng ngày thì bắt đầu bằng số 1, còn tháng lại bắt đầu bằng 0:

var date = new Date(2021, 2, 15);
date.getDate(); // 15
date.getDay(); // 1
date.getMonth(); // 1
date.getFullYear(); // 2021

Điều kỳ cục đây này, các bạn chú ý nhá:

var day = day.getDate(); // ngày
var month = day.getMonth() + 1; // tháng

Phép toán làm khó Java và Javascript

Có một cái phép toán làm khó cả hai ngôn ngữ lập trình này, kaka:

var total = 0.1 + 0.2;
console.info(total); // ra 0.3000000000000004

Để correct được phép toán này thì có nhiều cách, các bạn có thể làm dài dòng thế này:

parseFloat( (0.1 + 0.2).toPrecision(5) );

Phiền phức chưa 😀

NaN là một số

NaN là một số, NaN là viết tắt của Not A Number. Sao nó lại là một số nhỉ?

typeof NaN === 'number'; // true

Và nếu bạn compare thế này thì nó luôn trả về false:

NaN == NaN; // false
NaN === NaN; // false
parseInt("Chào") === parseInt("Chào"); // false

Cách tốt nhất để kiểm tra có phải nó là một số hay không bằng hàm này:

if ( isNaN("Chào") ) {} // true

Cẩn thận với phép cộng

1 + "2" = 12; // ối dồi ôi
123 + [456] = 123456; // haha
{} + {} = NaN;
{} + [] = 0;
[] + {} = "object Object";

Null và Undefined

Chú ý Null là một giá trị, còn Undefined là chưa xác định. Khi compare hai giá trị này các bạn cần lưu ý:

Null == Undefined; // true
Null === Undefined; // false

Mảng trong Javascript, thêm element vào mảng

Javascript không giống PHP hoặc một vài ngôn ngữ khác. Bạn không thể thêm vào mảng bằng cách này:

var AR = ["A", "B"];
AR[3] = "C"; // hỏng: ["A", "B", undefined, "C"]
AR[1] = "C"; // ["A", "C"]

Muốn thêm Element vào trong một mảng?

AR.push("Mì");

Trong Javascript, typeof array là object

Javascript, bạn cần phải check nếu là mảng bằng hàm Array.isArray(); không dùng typeof được!

typeof [] = "object";
typeof {} = "object"; // haha!

let, var và const

let khai báo một biến, cho phép gán lại nhưng không định nghĩa lại.

var thì thoải mái, khai báo lại, ghi đè, gán giá trị …

const: Không gán lại, không ghi đè…

let vat = "VAT";
vat = "CH"; // OKAY
var vat = "C"; // ERROR
----------------
const vay  = "VAC";
vay = "VAK"; // lỗi

Còn gì nữa mà khi lập trình với Javascript các bạn vướng mắc nhỉ? Comment nha!

À mà, Javascript là ngôn ngữ free-typed nên khó làm các dự án lớn. Các bạn có thể tham khảo thêm bài học TypeScript để có thể xài Javascript như một ngôn ngữ Strong Typed. Phê lắm nhá!

Video liên quan

Bạn đang xem bài viết lập trình Javascript tại blog cá nhân của Jam. Còn rất nhiều các bài viết khác tại chuyên mục Lập trình đang được yêu thích.