Trong bài này chúng ta sẽ nói về toán tử với điều kiện là câu lệnh "if"

Đôi khi chúng ta cần thực hiện những hành động khác nhau dựa trên một điều kiện.

Vậy khi đó chúng ta đã có câu lệnh "if" để làm điều đó

Câu lệnh "if"

câu lệnh "if" sẽ nhận lấy điều kiện, và tính toán nó, sau đó nếu kết quả trả về true thì thực thi đoạn code

ví dụ:

let year = prompt('In which year was ECMAScript-2015 specification published?', '');

if (year == 2015) alert( 'You are right!' );

Trong ví dụ ở trên, sau câu lệnh if chỉ có duy nhất một lệnh khác được thực hiện nếu câu lệnh if nhận giá trí là true.

Trong trường hợp cần thực hiền nhiều đoạn code phức tạp sau lệnh if thì chúng ta phải đặt đoạn code trong một khối ngoặc nhọn

if (year == 2015) {
  alert( "That's correct!" );
  alert( "You're so smart!" );
}

Nên là đặt chúng trong dấu ngoặc nhọn, kể cả có 1 câu lệnh sau đó, code trong sáng dễ đọc hơn.

Boolean conversion

Câu lệnh if(...) đánh giá biểu thức ở bên trong ngoặc, và nó sẽ được chuyển đổi kết quả về dạng boolean true hoặc false.

Cùng nhớ lại quy tắc chuyển đổi nào.

  • Số 0, và giá trị string rỗng "", null, undefined hoặc NaN thì sẽ trở thành false.
  • còn lại tất cả các giá trị khác được trả về true.

Xem ví dụ dưới đây để hiểu hơn

câu lệnh này sẽ không bao giờ được thực hiện

if (0) { // 0 is falsy
  ...
}

... còn câu lệnh này sẽ được thực hiện

if (1) { // 1 is truthy
  ...
}

Chúng ta có thể đặt tên giá trị để dẽ dàng đọc code hơn như sau:

let anChoi = (year == 2018); // equality evaluates to true or false

if (anChoi) {
  ...
}

Câu lệnh else

Nếu câu lệnh if mà trả về false thì câu lệnh else sau đó sẽ được thực hiện

let anChoi = (year == 2018); // giá trị này sẽ là true hoặc false
if (anChoi) {
  diTanGai();
}else{
  oNhaNgu();
}

Lệnh else if

Có nhiều lúc chúng ta muốn test nhiều trường hợp khác nhau, nếu trường hợp nào đúng thì thực hiện. Thì chúng ta có thể dùng lệnh else if

let tuoi = 18
if (tuoi<18) {
  nuoiChoLon(); //Thực hiện function nuôi lớn
}else if(tuoi=18){
  tanThoi(); //Thực hiện function tán gái
} else {
khongLamGiCa(); // Không thực hiện gì cả
}

Toán tử 3 ngôi 

Đôi khi chúng ta muốn đặt biến phụ thuộc vào một điều kiện gì đó thì sao nhi? 

let accessAllowed;
let age = prompt('How old are you?', '');

if (age > 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}

alert(accessAllowed)

Ví dụ trên biến sẽ phụ thuộc vào giá trị age 

Nhưng có một thứ gọi là toán tử 3 ngôi, thứ này sẽ giúp cho code của bạn dễ dàng hơn nhiều

Cú pháp;

let accessAllowed = (age > 18) ? true : false;

Về mặt kỹ thuật thì chúng ta có thể có dấu ngoặc đơn hoặc không có dấu ngoặc đơn ở trong lệnh điều kiện (age > 18)

* Toán tử 3 ngôi nhiều điều kiện khác nhau thì sao?

tương tự như lệnh if , thì toán 3 ngôi cũng trả về giá trị mà trong đó có nhiều điều kiện khác nhau.

let age = prompt('age?', 18);

let message = (age < 3) ? 'Hi, baby!' :
  (age < 18) ? 'Hello!' :
  (age < 100) ? 'Greetings!' :
  'What an unusual age!';

alert( message );

Trong trường hợp nhiều điều kiện như này thì dấu hai chấm ':' sẽ được hiểu là else if

***

Hi vọng bài này sẽ giúp các bạn có cách nhìn tổng quan về câu lệnh if hơn