2010-11-17 7 views
9

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.)

+1

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

+0

@delnan yo también :) –

Respuesta

2

Protovis también tiene su propio código para manejar el caso en que el navegador se está ejecutando todavía no soporta el formato de cierre expresión, aquí: http://vis.stanford.edu/protovis/jsdoc/symbols/src/src_pv-internals.js.html

+0

buen punto. (4 caracteres para llevar) –

+0

¡Gracias! Me quedé perplejo al tratar de determinar qué significaba '

  • 11. uso extraño de vacío
  • 12. extraño MultiBinding StringFormat tema
  • 13. expresión regular usando Javascript val() partido() método
  • 14. Ruby 1.9 y Javascript expresión regular
  • 15. Analizador de Javascript para una expresión simple
  • 16. Expresión regular para formatear números en JavaScript
  • 17. JavaScript excepción expresión regular (Grupo no válido)
  • 18. iterador expresión JavaScript regular para extraer grupos
  • 19. Javascript si evaluación de la expresión
  • 20. JavaScript Expresión regular "Carácter de espacio único"
  • 21. Javascript nueva expresión regular de la cadena
  • 22. Expresión regular de Javascript Eliminar espacios
  • 23. URL expresión regular no funciona en javascript
  • 24. Javascript subcadena partido después de expresión regular
  • 25. Operador de JavaScript extraño: expr >>> 0
  • 26. Problema de expresión regular de Javascript con \ by caracteres internacionales
  • 27. Comportamiento extraño en una expresión regular de perl con sustitución global
  • 28. Hacer una expresión regular de JavaScript equivalente a una expresión regular PHP
  • 29. extraño error "406 no es aceptable"
  • 30. Evaluar una cadena como expresión matemática en JavaScript