# JS 常遇到的問題 ## 座標相加減 | | c++ | js | | -------- | -------- | -------- | | 座標相加 | Vec(1,1) + Vec(2,2) | cc.pAdd(cc.p(1,1), cc.p(2,2)) | | 座標相減 | Vec(1,1) - Vec(2,2) | cc.pSub(cc.p(1,1), cc.p(2,2)) | ## mutable variable is accessible from closure 以下code會出現此error: ```javascript= var that = this; for (var r = column; r <= column + length - 1; r++) { var sym = this.getSymbolAtPosition(r, row); if (sym) { sym.runAction(cc.sequence(cc.fadeOut(1), cc.callFunc(function() { sym.turnWildImage(r < 2 ? that.WILD_BOY_SYMBOL_INDEX : that.WILD_GIRL_SYMBOL_INDEX); }))); } } ``` Solution 1: ```javascript= var that = this; for (var r = column; r <= column + length - 1; r++) { var sym = this.getSymbolAtPosition(r, row); if (sym) { (function (sym, r) { sym.runAction(cc.sequence(cc.fadeOut(1), cc.callFunc(function() { sym.turnWildImage(r < 2 ? that.WILD_BOY_SYMBOL_INDEX : that.WILD_GIRL_SYMBOL_INDEX); }))); })(sym, r); } } ``` Solution 2: ```javascript= var that = this; for (var r = column; r <= column + length - 1; r++) { var sym = this.getSymbolAtPosition(r, row); if (sym) { sym.runAction(cc.sequence(cc.fadeOut(1), cc.callFunc(function(target, data) { data["sym"].turnWildImage(data["r"] < 2 ? that.WILD_BOY_SYMBOL_INDEX : that.WILD_GIRL_SYMBOL_INDEX); }, {"sym": sym, "r": r}))); } } ```