Có thể xuất các hàm Arrow trong ES6 / 7 không?


96

Câu lệnh xuất bên dưới đưa ra lỗi cú pháp

export default const hello = () => console.log("say hello")

tại sao ?

Tôi chỉ có thể xuất các hàm được đặt tên

export function hello() {
  console.log("hello")
}

Lý do là gì?


4
Thực ra lỗi nói lên điều gì?
Andy

2
Hoạt động tốt ở đây: astexplorer.net/#/0fv5UXttsP .
Felix Kling


1
lỗi cú pháp là gì?
omarjmh

1
Bạn không thể đặt tên cho một bản xuất mặc định.
Felix Kling

Câu trả lời:


156

Có thể xuất các hàm Arrow trong ES6 / 7 không?

Đúng. exportkhông quan tâm đến giá trị bạn muốn xuất.

Câu lệnh xuất bên dưới báo lỗi cú pháp ... tại sao?

Bạn không thể có một bản xuất mặc định đặt tên cho nó ("mặc định" đã là tên của bản xuất).

Cũng được

export default () => console.log("say hello");

hoặc là

const hello = () => console.log("say hello");
export default hello;

4
Cách hoạt động bên dưới sau đó xuất mặc định xin chào = () => {console.log ("why the downvote")}
jozzy 06-04-16

3
x = ylà một biểu thức gán phân giải thành giá trị của y. Nó không phải là một khai báo biến. Bạn có thể đặt x = ybất cứ nơi nào bạn có thể đặt một biểu thức. Lưu ý: Điều này sẽ chuyển sang chế độ nghiêm ngặt nếu xkhông được xác định trước.
Felix Kling

2
những gì về xuất khẩu thông thường? là nó có thể làm một cái gì đó như export () => {/*body*/} as getUsers;:? hay tôi phải xác định nó trước và sau đó xuất nó?
Tomasz Mularczyk

44
@Tomasz:export const getUser = () => {...};
Felix Kling

3
@Burrich: Không quan trọng hàm được tạo ra như thế nào miễn là nó có thể được sử dụng theo cách mà nó được cho là.
Felix Kling

13

Nếu bạn không muốn xuất mặc định, bạn có thể chỉ cần xuất một hàm được đặt tên bằng cú pháp sau:

export const yourFunctionName = () => console.log("say hello");

Vì vậy, bạn thay thế export function yourFunctionName () {bằng export const yourFunctionName = () => . Độ dài các ký tự là như nhau, nhưng có nhiều khả năng bạn mắc lỗi đánh máy trong phần này = () =>. Thành thật mà nói, đối với tôi, nó cảm thấy ít đọc hơn và nhiều công việc hơn :)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.