我正在学习如何使用Phaser框架编写HTML5游戏。作为学习过程的一部分,我正在做的一件事是研究和调整我在网上找到的例子。我现在正在研究的例子是4096/2048/Threes clone。在示例源代码中,我看到了一个奇怪的模式。在操作某个变量时,作者一直在变量和递增/递减运算符之间放置一个空格。例如,下面是源代码中的第248到268行:
moveTile: function(tile, row, col, distance, changeNumber){
this.movingTiles ++; // example gap
this.tweens.add({
targets: [tile.tileSprite],
x: this.tileDestination(col, COL),
y: this.tileDestination(row, ROW),
duration: gameOptions.tweenSpeed * distance,
onComplete: function(tween){
tween.parent.scene.movingTiles --; // example gap
if(changeNumber){
tween.parent.scene.transformTile(tile, row, col);
}
if(tween.parent.scene.movingTiles == 0){
tween.parent.scene.scoreText.text = tween.parent.scene.score.toString();
tween.parent.scene.bestScoreText.text = tween.parent.scene.bestScore.toString();
tween.parent.scene.resetTiles();
tween.parent.scene.addTile();
}
}
})
},
令我惊讶的是,这仍然增加/减少了this.movingTiles
变量。由于开发人员在与this.movingTiles
变量交互时始终如一地这样做,我认为它必须是一个慎重的选择。此外,在设置for循环时,开发人员不会在变量和递增/递减运算符之间设置间隙。这意味着它是有针对性且一致的行为。
increment/decrement operator上的Mozilla文档仅提及增加/减少运算符的前置和后缀之间的区别。他们不讨论增加差距。我在javascript中相当舒服,但我当然不是专家。所以我问你是否有一种疯狂的方法,或者只是一种奇怪的特质?
我想说明一点,我的意思是对原始开发者没有任何不尊重。他的例子对我来说是非常宝贵的学习工具。我只是想确保我理解细微差别。
答案 0 :(得分:2)
根据白色空间spec (ES6):
空格代码点用于提高源文本的可读性和分隔标记(不可分割的词汇单位),但其他方面无关紧要。
如果您引用的代码,涉及的令牌是++
标点符号和标识符名称。
回答你的问题:
所以我问你是否有一种方法可以解决他们的疯狂问题,还是只是一种奇怪的特质?
没有功能差异,纯粹是品味问题。
请记住,只有在将分号显式添加到代码中之后(由程序员)才会成立。如果情况并非如此,则自动分号插入到图片中,并且在某些情况下,可能是功能差异。你可以在这里阅读:https://www.ecma-international.org/ecma-262/6.0/#sec-examples-of-automatic-semicolon-insertion
答案 1 :(得分:-1)
作业测试
i = 0;
j = 0;
i++;
j ++;
console.log(i === j);
返回测试
j = 0;
x1 = j++;
j = 0;
x2 = j ++;
console.log(x1 === x2);
两个测试都会注销true
。