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.)
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
@delnan me too :) –