Tôi đang sử dụng thư viện của bên thứ ba có chức năng lấy các chức năng làm đối số. Tôi đang thực hiện một số kiểm tra có điều kiện để quyết định có nên thêm một chức năng cụ thể làm tham số hay không và trong một số trường hợp tôi không muốn cung cấp một chức năng. Cung cấp null trong các trường hợp đó ném một lỗi.
Tôi đã tìm thấy mã này hoạt động, nhưng tôi không hoàn toàn hiểu những gì đang xảy ra.
compose[__DEV__ ? devTools[] : f => f]
f => f
có tương đương với [] => {}
một hàm ẩn danh trống không?
Hỏi ngày 20 tháng 12 năm 2016 lúc 15:45Dec 20, 2016 at 15:45
Một cái gì đó cái gì đóSomethingOn
8.85417 Huy hiệu vàng65 Huy hiệu bạc104 Huy hiệu đồng17 gold badges65 silver badges104 bronze badges
7
f => f
là hàm nhận dạng. Nó chỉ đơn giản là trả lại đối số đã được thông qua.identity function. It simply returns the argument that was passed in.
Hàm này thường được sử dụng làm giá trị mặc định cho các quá trình chuyển đổi, vì nó không thực hiện bất kỳ phép biến đổi nào.
f => f
có tương đương với[] => {}
một hàm ẩn danh trống không?
Hỏi ngày 20 tháng 12 năm 2016 lúc 15:45
Một cái gì đó cái gì đóDec 20, 2016 at 16:34
8.85417 Huy hiệu vàng65 Huy hiệu bạc104 Huy hiệu đồngFelix Kling
f => f
là hàm nhận dạng. Nó chỉ đơn giản là trả lại đối số đã được thông qua.172 gold badges1069 silver badges1116 bronze badges
1
Hàm này thường được sử dụng làm giá trị mặc định cho các quá trình chuyển đổi, vì nó không thực hiện bất kỳ phép biến đổi nào.
Không. Hàm trống không trả về bất cứ điều gì. Hàm danh tính trả về thông qua trong đối số.
Đã trả lời ngày 20 tháng 12 năm 2016 lúc 16:34
Felix Klingfelix KlingDec 20, 2016 at 15:48
4
774K172 Huy hiệu vàng1069 Huy hiệu bạc1116 Huy hiệu đồng
f => f
tương tự* với
"use strict";
[function [f] {
return f;
}];
2
Tr1et
Vì vậy, gần gũi, nhưng không hoàn toàn những gì bạn mong đợi.12 silver badges24 bronze badges
* - Như đã được chỉ ra trong các bình luận, có những khác biệt tinh tế, nhưng vì lợi ích của câu hỏi của bạn, tôi không nghĩ rằng chúng đặc biệt có liên quan. Họ rất phù hợp trong các tình huống khác.Dec 21, 2016 at 14:31
Đã trả lời ngày 20 tháng 12 năm 2016 lúc 15:48Nzall
Những người khác đã đề cập đến những gì f => f
làm, vì vậy tôi sẽ không đi sâu hơn vào đó. Tôi sẽ giải thích phần còn lại của chức năng, bởi vì có một chút khác biệt giữa f => f
và
55 gold badges29 silver badges59 bronze badges"use strict";
[function [f] {
return f;
}];
5
Toán tử ternary kiểm tra xem
"use strict";
[function [f] {
return f;
}];
6 là giá trị sự thật và nếu vậy, nó trả về hàm "use strict";
[function [f] {
return f;
}];
7. Nếu không, nó trả về hàm nhận dạng f => f
không làm gì cả. Đặt khác nhau: Mã này cho phép một số chức năng chế độ phát triển. Nếu không có mã còn lại, thật khó để biết chế độ này thêm gì, nhưng có lẽ, nó sẽ cho phép một số thông tin ghi nhật ký bổ sung và ít bị che giấu hơn.84912 Huy hiệu bạc24 Huy hiệu đồng
"use strict";
[function [f] {
return f;
}];
Đã trả lời ngày 21 tháng 12 năm 2016 lúc 14:31=> you used is ES6 feature called arrow expression. The other expression of interest
[] => {}; // es6
Nzallnzall
[function [] {}];
3,4895 Huy hiệu vàng29 Huy hiệu bạc59 Huy hiệu Đồnganonymous it makes sense if you add the name to the function:
let empty = [] => {}; // es6
Bất cứ lúc nào với vấn đề nan giải tương tự, bạn có thể sử dụng Babel để có được câu trả lời.
var empty = function empty[] {};
Nó trở lại như thế này:
Btw, => bạn đã sử dụng là tính năng ES6 có tên là biểu thức mũi tên. Biểu hiện quan tâm khác10 gold badges50 silver badges66 bronze badges
sẽ chuyển đổi thành:Dec 22, 2016 at 19:17
Vì các biểu thức chức năng mũi tên luôn ẩn danh, nó có ý nghĩa nếu bạn thêm tên vào hàm:prosti
sẽ chuyển đổi thành11 gold badges170 silver badges144 bronze badges