可能重複:
What does this mean? (function (x,y)){…}){a,b); in JavaScript編譯後代碼中的'()'是什麼?
我從Canvas documentation下面的JS代碼:
for(var i=0;i<4;i++){
for(var j=0;j<3;j++){
ctx.beginPath();
var x = 25+j*50; // x coordinate
var y = 25+i*50; // y coordinate
var radius = 20; // Arc radius
var startAngle = 0; // Starting point on circle
var endAngle = Math.PI+(Math.PI*j)/2; // End point on circle
var anticlockwise = i%2==0 ? false : true; // clockwise or anticlockwise
ctx.arc(x,y,radius,startAngle,endAngle, anticlockwise);
if (i>1){
ctx.fill();
} else {
ctx.stroke();
}
}
}
我希望把它變成一個CoffeeScript的代碼。這裏,它是:
@draw = ->
canvas = document.getElementById('canvas')
ctx = canvas.getContext('2d')
for i in [0..3]
for j in [0..2]
ctx.beginPath()
x = 25 + j * 50
y = 25 + i * 50
radius = 20
startAngle = 0
endAngle = Math.PI + (Math.PI * j)/2
anticlockwise = if i % 2 == 0 then false else true
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise)
if i > 1 then ctx.fill() else ctx.stroke()
一切工作好了,但我有一個關於編譯後的代碼一個問題:
this.draw = function() {
var anticlockwise, canvas, ctx, endAngle, i, j, radius, startAngle, x, y, _results;
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
_results = [];
for (i = 0; i <= 3; i++) {
_results.push((function() {
var _results2;
_results2 = [];
for (j = 0; j <= 2; j++) {
ctx.beginPath();
x = 25 + j * 50;
y = 25 + i * 50;
radius = 20;
startAngle = 0;
endAngle = Math.PI + (Math.PI * j)/2;
anticlockwise = i % 2 === 0 ? false : true;
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
if (i > 1) {
_results2.push(ctx.fill());
} else {
_results2.push(ctx.stroke());
}
}
return _results2;
})());
}
return _results;
};
那麼,爲什麼後return _results2;
線「()」括號出現?這不是什麼大問題:代碼的功能非常好,但是我想知道如何消除這些圓括號。
UPD:謝謝。現在我明白了,'()'是什麼。但是,我仍然有一個問題:爲什麼會出現?