2017-06-21 19 views
5

Tôi đã xem xét mã số react-jsonschema-form. Tôi đã xem các dòng sau mà tôi không thể hiểu được.Không thể hiểu cú pháp javascript

var formData = (0, _utils.getDefaultFormState)(schema, props.formData, definitions); 

Nội dung trong khung đầu tiên có chức năng đối số nào (giản đồ, đạo cụ.formData v.v ...) được chuyển?

+0

dấu ngoặc đầu tiên '()' trả về một hàm chấp nhận 3 đối số. – Jai

+2

Biểu thức '(n0, n1, ..., n)' đánh giá thành 'n', vì vậy trong trường hợp của bạn, hàm' _utils.getDefaultFormState'. Đối với lý do tại sao điều này được sử dụng, tôi không chắc chắn – Phil

+1

Phil bình luận của bạn sẽ xứng đáng như một câu trả lời ở bên phải của riêng nó. –

Trả lời

1

Tôi đoán câu trả lời cho câu hỏi này là trong biểu thức đầu tiên (0,_utils.getDefaultFormState) toán tử comma, đánh giá đối số cuối cùng và trả về nó.

Vì vậy, toán tử dấu phẩy hoạt động trên các toán hạng của nó từ trái sang phải và trả về last operand được đánh giá cao nhất trong biểu thức.

Nhưng điều đó khác về mặt chức năng và giá trị được trả về.

// sample from MDN. 
function myFunc() { 
    var x = 0; 

    return (x += 1, x); // the same as return ++x; 
} 

Như tôi đã đề cập trong các bình luận:

ngoặc đầu tiên là tự thực hiện chức năng và nó sẽ trả về giá trị của nó như một chức năng của _utils đối tượng, mà chấp nhận 3 hoặc nhiều đối số.

1

Trong ngữ cảnh đó cặp ngoặc đơn đầu tiên là một chuỗi câu lệnh có giá trị là giá trị của biểu thức cuối cùng. Sau đó:

(0,_utils.getDefaultFormState) 

trả về hàm objet _utils.getDefaultFormState sau đó được gọi với các đối số sau đây.