2010-11-17 20 views
9

nasıl Protovis çalıştığını anlamak için denemek ve böyle kod tökezledi:Garip JavaScript ifadesi

(function(a) a+2) 

Ben duyuyorum: Böyle

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); 
Ben kendi kısa fonksiyonları haddeleme çalıştı

, function(){stuff();} gibi bildirilen anonim işlevlerle ilgili NOT. Söz konusu kod function() stuff; gibi görünüyor ve işe yarıyor. Neden olduğunu bilmek isterim. myvar = function(a){return a+1;} gibi yapılar hakkında bilgi edinmek istemiyorum, ancak myvar = (function(a) a+1) gibi yapılar hakkında. Lütfen yukarıdaki kodu daha dikkatli bir şekilde inceleyin.

Ancak, şüphelendiğim gibi bir sözdizimi hatası attı.

Nasıl böyle kod işi olabilir?

:

+1

ben alamadım. Hatta belirtilmiş dilbilgisini kontrol ettim - parantez * isimleri anonim işlevler için gereklidir: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf "A.5 İşlevler ve Programlar ". – delnan

+0

@delnan ben de :) –

cevap

2

Protovis da yayınladığınız tarayıcı Burada henüz, İfade Kapatma biçimi desteklemiyor durumda işlemek için kendi kodu vardır: http://vis.stanford.edu/protovis/jsdoc/symbols/src/src_pv-internals.js.html

+0

iyi nokta kullanın. (4 chars) –

+0

Teşekkürler! Ne demek istedim