2010-11-17 18 views
9

Tôi cố gắng để hiểu làm thế nào Protovis công trình, và tôi stumbled khi mã như thế này:Weird Javascript biểu

force.node.add(pv.Dot) 
    .size(function(d) (d.linkDegree + 4) * Math.pow(this.scale, -1.5)) // notice this 
    .fillStyle(function(d) d.fix ? "brown" : colors(d.group)) // and this 
    .strokeStyle(function() this.fillStyle().darker()) // and even this 
    .lineWidth(1) 
    .title(function(d) d.nodeName) 
    .event("mousedown", pv.Behavior.drag()) 
    .event("drag", force); 

Tôi đã cố gắng lăn chức năng ngắn của riêng tôi, như thế này:

(function(a) a+2) 

Tôi KHÔNG hỏi về các hàm ẩn danh được khai báo như function(){stuff();}. Mã được đề cập trông giống như function() stuff; và mã hoạt động. Tôi muốn biết tại sao. Tôi không muốn tìm hiểu về các cấu trúc như myvar = function(a){return a+1;}, nhưng về các cấu trúc như myvar = (function(a) a+1). Vui lòng xem mã trên cẩn thận hơn.

Nhưng, như tôi nghi ngờ, nó đã ném một lỗi cú pháp.

Mã này hoạt động như thế nào?

(Lưu ý: mã protovis không công việc như dự định.)

+1

Tôi không nhận được nó. Tôi thậm chí đã kiểm tra ngữ pháp được chỉ định trong spec - các dấu ngoặc * là * cần thiết cho các chức năng ẩn danh: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf "A.5 Chức năng và chương trình ". – delnan

+0

@delnan me too :) –

Trả lời

2

Protovis cũng có mã riêng của mình để xử lý các trường hợp trình duyệt bạn đang chạy chưa hỗ trợ định dạng Đóng Biểu hiện, ở đây: http://vis.stanford.edu/protovis/jsdoc/symbols/src/src_pv-internals.js.html

+0

điểm tốt. (4 ký tự để đi) –

+0

Cảm ơn! Tôi đã stumped cố gắng để xác định những gì '