Khi tôi dần dần tham gia cùng mọi người trong việc sử dụng ES6 ở mức độ đầy đủ hơn [so với phiên bản trước đây của tôi chỉ dùng ES6], tôi khám phá ra những cách mới và thú vị để chơi với ngôn ngữ này. Tôi thậm chí còn học được rằng một số thứ không hoạt động theo cách tôi nghĩ
GIẢM GIÁ CHO NGƯỜI ĐỌC Tiết kiệm $50 khi mua thiết bị đầu cuối. đào tạo
Tôi đã xuất bản 38 video dành cho các nhà phát triển, nhà thiết kế, UX, UI, chủ sở hữu sản phẩm mới và bất kỳ ai cần chinh phục dòng lệnh ngay hôm nay
$49 - chỉ từ liên kết này
Nhiều bài tập
Không có gì lạ khi thấy nhiều nhiệm vụ trong một dòng trong mã của tôi. Một cái gì đó như thế này
// creating short variable name to exports
const app = module.exports = { /* exports */ };
Mặc dù vậy, nó gần như là một phản mẫu vì nó có thể vô tình rò rỉ ra toàn cầu. Lấy mã này trong trình duyệt chẳng hạn
function calc[v] {
var value = max = 10;
// …
}
Yup, tôi đã rò rỉ giá trị
function calc[v] {
var value = max = 10;
// …
}
4 dưới dạng toàn cầu. Tuy nhiên, miễn là tôi cẩn thận, nó sẽ hữu íchhủy diệt
Đây là nơi tôi đã bị bắt. Lấy ví dụ sau [mặc dù hơi phức tạp]. Mục đích của đoạn mã sau là lấy một đối tượng có sẵn [giá trị ở phía bên tay phải], hủy nó thành một đối tượng mới chứa một tập hợp con các thuộc tính từ RHS
Vì vậy, trong ví dụ dưới đây, giá trị của
function calc[v] {
var value = max = 10;
// …
}
5 là bao nhiêu?Thùng JS trên jsbin. com
Tôi đã mong đợi điều gì?
Trước đây, khi tôi xem xét nhiều nhiệm vụ, tôi luôn đọc nó giống như chủ tịch từ phải sang trái. Kiểu như thế này
// a = b = 10
b = 10, a = b;
Những gì bạn đang thấy ở bên trái, là kết quả của biểu thức bên phải
Điều này không có ý nghĩa gì khi bạn chỉ định một cái gì đó đơn giản như
function calc[v] {
var value = max = 10;
// …
}
6, bởi vì kết quả của biểu thức function calc[v] {
var value = max = 10;
// …
}
7 là function calc[v] {
var value = max = 10;
// …
}
8Tuy nhiên, điều này rất quan trọng khi tôi làm việc với hàm hủy [trong ví dụ], vì kết quả của biểu thức là vế phải, là giá trị của
function calc[v] {
var value = max = 10;
// …
}
9Vì kết quả của
function calc[v] {
var value = max = 10;
// …
}
0 là giá trị của function calc[v] {
var value = max = 10;
// …
}
9, nên giá trị của function calc[v] {
var value = max = 10;
// …
}
5 sẽ giống với function calc[v] {
var value = max = 10;
// …
}
3 chứ không phải function calc[v] {
var value = max = 10;
// …
}
4 như tôi đã mong đợiĐiều gì đang thực sự xảy ra ở đây?
Điều này có thể giúp bạn hiểu rõ hơn nếu bạn xem ví dụ sau
Thùng JS trên jsbin. com
Trong biểu thức đầu tiên, tôi đang gán
function calc[v] {
var value = max = 10;
// …
}
5, nhưng function calc[v] {
var value = max = 10;
// …
}
6 có phương thức function calc[v] {
var value = max = 10;
// …
}
7 và không làm gì với giá trị. Kết quả của biểu thức được đăng xuất. function calc[v] {
var value = max = 10;
// …
}
8. Điều này không phân biệt giá trị của function calc[v] {
var value = max = 10;
// …
}
6Khi tôi ghi lại giá trị của
function calc[v] {
var value = max = 10;
// …
}
6, nó là // a = b = 10
b = 10, a = b;
1 và không bao giờ được sửa đổiđọc thêm
Khi tôi thấy giá trị không như tôi mong đợi, tôi đã dễ dàng điều chỉnh suy nghĩ của mình và hiểu rằng RHS quan trọng hơn, nhưng thật vui khi tôi không hiểu tại sao