0

Bắt Đầu với Javascript (P9)

Trong phần trước ta đã biết đến 4 loại toán tử, phần này sẽ tiếp tục tìm hiểu về các loại toán tử khác:

  • Logical operators
  • String operators
  • Conditional (ternary) operator
  • Comma operator
  • Unary operators
  • Relational operator

1. Logical operators

Toán tử logic thường được sử dụng với các giá trị Boolean (logic); khi chúng được, chúng trả về một giá trị Boolean. Tuy nhiên, && và || các toán tử thực sự trả lại giá trị của một trong những toán hạng được chỉ định, vì vậy nếu các toán tử này được sử dụng với các giá trị không phải Boolean, chúng có thể trả về một giá trị không phải Boolean. Các toán tử logic được mô tả trong bảng dưới đây.

Toán tử sử dụng mô tả
Toán tử AND (&&) expr1 && expr2 trả về expr1 nếu nó có thể chuyển thành false, nếu không, trả về expr2. Do đó, khi được sử dụng với các giá trị Boolean, & & trả về true nếu cả hai toán hạng là đúng; ngược lại, trả về false.
Toán tử OR [ ]
Toán tử NOT (!) !expr1 Trả về false nếu toán hạng đơn của nó có thể được chuyển thành true; nếu không, trả về true.

Ví dụ về các biểu thức có thể được chuyển đổi thành false là các giá trị đánh giá là null, 0, NaN, chuỗi rỗng ("") hoặc không xác định.

Đoạn mã sau cho thấy các ví dụ của toán tử && (logical AND).

var a1 =  true && true;     // t && t returns true
var a2 =  true && false;    // t && f returns false
var a3 = false && true;     // f && t returns false
var a4 = false && (3 == 4); // f && f returns false
var a5 = 'Cat' && 'Dog';    // t && t returns Dog
var a6 = false && 'Cat';    // f && t returns false
var a7 = 'Cat' && false;    // t && f returns false

Đoạn mã sau cho thấy các ví dụ của || (OR logic).

var o1 =  true || true;     // t || t returns true
var o2 = false || true;     // f || t returns true
var o3 =  true || false;    // t || f returns true
var o4 = false || (3 == 4); // f || f returns false
var o5 = 'Cat' || 'Dog';    // t || t returns Cat
var o6 = false || 'Cat';    // f || t returns Cat
var o7 = 'Cat' || false;    // t || f returns Cat

Các mã sau đây cho thấy các ví dụ của! (logic NOT).

var n1 = !true;  // !t returns false
var n2 = !false; // !f returns true
var n3 = !'Cat'; // !t returns false

2. String operators

Ngoài các toán tử so sánh, có thể được sử dụng trên các giá trị chuỗi, toán tử nối (+) kết nối hai giá trị chuỗi với nhau, trả về một chuỗi khác là sự kết hợp của hai toán hạng string.

ví dụ:

console.log('my ' + 'string'); // console logs the string "my string".

Toán tử gán vắn tắt += cũng có thể được sử dụng để nối các chuỗi.

ví dụ:

var mystring = 'alpha';
mystring += 'bet'; // evaluates to "alphabet" and assigns this value to mystring.

3. Conditional (ternary) operator

Toán tử điều kiện là toán tử JavaScript duy nhất có ba toán hạng. Toán tử có thể có một trong hai giá trị dựa trên điều kiện. Cú pháp là:

condition ? val1 : val2

Nếu condition là true, toán tử có giá trị của val1. Nếu không nó có giá trị của val2. Bạn có thể sử dụng toán tử điều kiện bất cứ nơi nào bạn sẽ sử dụng một toán tử chuẩn.

Ví dụ,

var status = (age >= 18) ? 'adult' : 'minor';

Câu lệnh này chỉ định giá trị "adult" cho biến status nếu age từ 18 trở lên. Nếu không, nó chỉ định giá trị "minor" cho status.

4. Comma operator

Toán tử dấu phẩy (,) đơn giản đánh giá cả hai toán hạng của nó và trả về giá trị của toán hạng cuối cùng. toán tử này chủ yếu được sử dụng trong vòng lặp for, để cho phép nhiều biến được cập nhật mỗi lần qua vòng lặp.

Ví dụ, nếu a là một mảng 2 chiều với 10 phần tử ở một bên, mã sau đây sử dụng toán tử phẩy để cập nhật hai biến cùng một lúc. Mã in các giá trị của các phần tử chéo trong mảng:

var x = [0,1,2,3,4,5,6,7,8,9]
var a = [x, x, x, x, x];

for (var i = 0, j = 9; i <= j; i++, j--)
  console.log('a[' + i + '][' + j + ']= ' + a[i][j]);

5. Unary operators

Một toán tử unary là một phép toán chỉ có một toán hạng.

delete

Toán tử delete xóa một đối tượng, thuộc tính của đối tượng, hoặc một phần tử tại một chỉ mục được chỉ định trong một mảng. Cú pháp là:

delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // legal only within a with statement

nơi objectName là tên của một đối tượng, property là thuộc tính hiện có, và index là số nguyên đại diện cho vị trí của một phần tử trong một mảng.

Hình thức thứ tư là hợp lệ chỉ trong một lệnh with, để xóa một property từ một đối tượng.

Bạn có thể sử dụng toán tử delete để xóa các biến đã khai báo ngầm nhưng không phải khai báo với lệnh var

Nếu toán tử delete thành công, nó sẽ đặt thuộc tính hoặc phần tử thành undefined. Toán tử delete trả về true nếu hoạt động có thể; nó trả về false nếu thao tác không thể.

x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4;    // create property h
delete x;       // returns true (can delete if declared implicitly)
delete y;       // returns false (cannot delete if declared with var)
delete Math.PI; // returns false (cannot delete predefined properties)
delete myobj.h; // returns true (can delete user-defined properties)
delete myobj;   // returns true (can delete if declared implicitly)

Xóa các phần tử trong một mảng:

Khi bạn xóa một phần tử mảng, chiều dài mảng không bị ảnh hưởng. Ví dụ, nếu bạn xóa a[3], a[4] vẫn là a[4] và a[3] là undefined. ví dụ:

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
delete trees[3];
if (3 in trees) {
  // this does not get executed
}

Nếu bạn muốn một phần tử mảng tồn tại nhưng có một giá trị không xác định, sử dụng từ khoá undefined thay vì toán tử delete. Trong ví dụ sau, trees[3] được gán giá trị undefined, nhưng phần tử mảng vẫn tồn tại:

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
trees[3] = undefined;
if (3 in trees) {
  // this gets executed
}

typeof

void

in

instanceof

  1. Operator precedence

Thứ tự ưu tiên của toán tử xác định thứ tự chúng được áp dụng khi đánh giá một biểu thức. Bạn có thể ghi đè lên ưu tiên toán tử bằng cách sử dụng dấu ngoặc đơn.

Bảng dưới đây mô tả sự ưu tiên của các toán tử, từ cao nhất đến thấp nhất.

Operator type individual operators
member . []
call / create instance () new
negation/increment ! ~ - + ++ -- typeof void delete
multiply/divide * / %
addition/subtraction + -
bitwise shift << >> >>>
relational < <= > >= in instanceof
equality == != === !==
bitwise-and &
bitwise-xor ^
bitwise-or [
logical-and &&
logical-or [
conditional ?:
assignment = += -= *= /= %= <<= >>= >>>= &= ^=
comma ,

Kết Luận:

Trên đây là một vài toán tử trong javascript. Mong rằng nó có thể giúp ích cho bạn. Cảm ơn vì đã theo dõi bài viết.

Tham khảo: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Logical_operators


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí