staram się zrozumieć, jak Protovis prace i natknąłem się na kodzie tak:Weird JavaScript wyrażenie
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);
Próbowałem toczenia własne krótkie funkcje, jak poniżej:
(function(a) a+2)
Jestem NOT z pytaniem o funkcje anonimowe zadeklarowane jako function(){stuff();}
. Kod, o którym mowa, wygląda jak function() stuff;
i działa. Chcę wiedzieć dlaczego. Nie chcę się uczyć o konstrukcjach takich jak myvar = function(a){return a+1;}
, ale o konstrukcjach takich jak myvar = (function(a) a+1)
. Proszę uważnie przeczytać powyższy kod.
Ale, jak podejrzewałem, spowodował błąd składni.
Jak taki kod może działać?
(Uwaga: kod protovis robi działać zgodnie z przeznaczeniem.)
ja nie rozumiem. Sprawdziłem nawet gramatykę określoną w specyfikacji - nawiasy * są * wymagane do anonimowych funkcji: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf "A.5 Funkcje i programy ". – delnan
@delnan ja też :) –