que tratar de entender cómo Protovis obras, y yo tropezó con código como este:extraño Javascript expresión
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);
He intentado rodar mis propias funciones cortas, así:
(function(a) a+2)
Soy NO preguntando por funciones anónimas declaradas como function(){stuff();}
. El código en cuestión se parece al function() stuff;
y funciona. Quiero saber por qué. No quiero aprender sobre construcciones como myvar = function(a){return a+1;}
, sino sobre construcciones como myvar = (function(a) a+1)
. Por favor, mire el código anterior con más cuidado.
Pero, como sospechaba, arrojó un error de sintaxis.
¿Cómo funciona este código?
(Nota: el código Protovis hace funciona como es.)
Yo no lo entiendo. Incluso revisé la gramática especificada en la especificación: las llaves * son * necesarias para las funciones anónimas: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf "A.5 Funciones y Programas ". – delnan
@delnan yo también :) –