2011-12-22 37 views

Trả lời

7

Nếu muốn, chức năng render sẽ có thể call itself via render(), tuy nhiên, render() không thể truy cập anywhere else.

Ngoài ra, trong theo dõi ngăn xếp, bạn sẽ thấy render làm tên hàm, thay vì .

+2

Nó cũng phải được nói rằng có một lỗi trong các phiên bản IE cũ hơn, cụ thể là nó sẽ tạo ra hai hàm khác nhau cho các biểu thức hàm được đặt tên. –

+0

Cảm ơn bạn rất nhiều vì lời giải thích đó; đó là một mô hình mà tôi đã bị bí ẩn bởi một vài tháng nay. –

+1

Điều này cũng được yêu cầu ở chế độ nghiêm ngặt vì 'arguments.caller' và' arguments.callee' đều ném vào đọc, và do đó chức năng thực sự cần phải được đặt tên để gọi chính nó. –

0

Cần thiết cho cuộc gọi đệ quy.

+0

Nó không * cần thiết * nhưng nó có thể được sử dụng cho điều đó. –

+0

@Felix Kling chính xác :) – yatskevich

0

Các sự xuất hiện đầu tiên của làm là tên của các lĩnh vực chức năng được lưu trữ trong, do đó bạn có thể gọi hàm qua

object.render(context, partials); 

Thứ hai làm tên chức năng riêng của mình. Công cụ gỡ lỗi sau đó hiển thị hiển thị thay vì chỉ chức năng.

Lý do thứ hai, có thể là chức năng có thể gọi chính nó theo cách đệ quy.

var render = function render(n) { 
    console.log("render"); 
    if (n < 1) 
     render(n + 1); 
}; 
render(0); 

Edit: Xin lỗi, tôi đã viết một cái gì đó thực sự sai trong phiên bản đầu tiên.

+0

Vâng, bạn nói đúng. Có lẽ tôi cần phải nghỉ ngơi. – Yogu

Các vấn đề liên quan