12/08/2018, 16:37

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

Trong phần này chúng ta sẽ đi tìm hiểu về expressions của javascript. Một biểu thức - expression là bất kỳ đơn vị hợp lệ của code mà giải quyết cho một giá trị. Mỗi biểu thức có cú pháp hợp lệ giải quyết đối với một số giá trị nhưng khái niệm, có hai loại biểu thức: với side effects (ví dụ: ...

Trong phần này chúng ta sẽ đi tìm hiểu về expressions của javascript.

Một biểu thức - expression là bất kỳ đơn vị hợp lệ của code mà giải quyết cho một giá trị.

Mỗi biểu thức có cú pháp hợp lệ giải quyết đối với một số giá trị nhưng khái niệm, có hai loại biểu thức: với side effects (ví dụ: những phép gán giá trị cho một biến) và những cái mà trong một nghĩa nào đó đánh giá và do đó giải quyết một giá trị.

Biểu thức x = 7 là một ví dụ của kiểu đầu tiên. Biểu thức này sử dụng toán tử = để gán giá trị 7 cho biến x. Các biểu hiện chính nó đánh giá là 7.

Ta có 3 + 4 là một ví dụ về kiểu biểu thức thứ hai. Biểu thức này sử dụng toán tử + để cộng ba và bốn lại với nhau mà không gán kết quả, bảy cho một biến.

JavaScript có các loại biểu thức sau:

  • Arithmetic - Số học: đánh giá một số, ví dụ 3.14159. (Nói chung sử dụng toán tử số học.)
  • String - Chuỗi: đánh giá một chuỗi ký tự, ví dụ: "Fred" hoặc "234". (Nói chung sử dụng các toán tử chuỗi.)
  • Logical- logic: đánh giá đúng hoặc sai. (Thường bao gồm các toán tử logic.)
  • Primary expressions - Biểu thức chính: Các từ khóa cơ bản và các biểu thức chung trong JavaScript.
  • Left-hand-side expressions - Phía bên trái biểu thức: Các giá trị còn lại là đích đến của một phép gán.

1. Primary expressions

Các từ khóa cơ bản và các biểu thức chung trong JavaScript.

this

Sử dụng từ khóa this để chỉ đối tượng hiện tại. Nói chung, điều này đề cập đến các đối tượng gọi trong một phương pháp. Sử dụng this với dấu chấm hoặc ký hiệu [] như sau:

this['propertyName']
this.propertyName

Giả sử một hàm được gọi là validate xác nhận một thuộc tính value của đối tượng, cho đối tượng và các giá trị cao và thấp:

function validate(obj, lowval, hival) {
  if ((obj.value < lowval) || (obj.value > hival))
    console.log('Invalid Value!');
}

Bạn có thể gọi xác nhận validate trong mỗi form xử lý sự kiện onChange của một phần tử, sử dụng this để chuyển nó cho phần tử form, như trong ví dụ sau:

<p>Enter a number between 18 and 99:</p>
<input type="text" name="age" size=3 onChange="validate(this, 18, 99);">

Grouping operator

Toán tử nhóm () kiểm soát sự ưu tiên của việc đánh giá trong các biểu thức. Ví dụ, bạn có thể ghi đè lên phép nhân và phân chia trước tiên, sau đó bổ sung và phép trừ để đánh giá bổ sung đầu tiên.

var a = 1;
var b = 2;
var c = 3;

// default precedence
a + b * c     // 7
// evaluated by default like this
a + (b * c)   // 7

// now overriding precedence 
// addition before multiplication   
(a + b) * c   // 9

// which is equivalent to
a * c + b * c // 9

Comprehensions

Comprehensions là một tính năng JavaScript thử nghiệm, được nhắm mục tiêu để đưa vào phiên bản ECMAScript trong tương lai. Có hai phiên bản hiểu:

[for (x of y) x] là mảng comprehensions.

(for (x of y) y) là toán tử sinh comprehensions.

Comprehensions tồn tại trong nhiều ngôn ngữ lập trình và cho phép bạn nhanh chóng lắp ráp một mảng mới dựa trên cái có sẵn, ví dụ:

[for (i of [1, 2, 3]) i * i]; 
// [1, 4, 9]

var abc = ['A', 'B', 'C'];
[for (letters of abc) letters.toLowerCase()];
// ["a", "b", "c"]

2. Left-hand-side expressions

Left hand còn lại là đích đến của một phép gán.

new

Bạn có thể sử dụng toán tử new để tạo một instance của một loại đối tượng mà người dùng định nghĩa hoặc của một trong các loại đối tượng được xây dựng. Sử dụng new như sau:

var objectName = new objectType([param1, param2, ..., paramN]);

super

Từ khóa super được sử dụng để gọi hàm trong lớp cha của đối tượng đó. Nó rất hữu ích với classes để gọi constructor cha, ví dụ:

super([arguments]); // calls the parent constructor.
super.functionOnParent([arguments]);

Spread operator

Spread operator cho phép một biểu thức được mở rộng ở những nơi có nhiều đối số (cho các lời gọi hàm) hoặc nhiều phần tử (cho các mảng literals) được mong đợi.

Ví dụ: bây giờ nếu bạn có một mảng và muốn tạo mảng mới với mảng hiện tại là một phần của nó, thì cú pháp literal mảng không còn nữa và bạn phải quay trở lại với mã bắt buộc bằng cách sử dụng kết hợp push, splice, concat, vv. Với cú pháp spread trở nên rất ngắn gọn:

var parts = ['shoulder', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes'];

Tương tự như vậy, spread operator làm việc với với các lời gọi hàm:

function f(x, y, z) { }
var args = [0, 1, 2];
f(...args);

Kết Luận: Trên đây là một số kiến thức cơ bản về biểu thức trong javascript. Cảm ơn bạn đã theo dõi bài viết, mong rằng nó có thể giúp ích cho bạn.

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

0