有什么理由要在变量和递增/递减运算符之间留出空格吗?



我正在学习如何使用Phaser框架编写HTML5游戏。作为学习过程的一部分,我正在做的一件事是研究和改编我在网络上找到的例子。我现在正在研究的示例是 4096/2048/Threes 克隆。在示例源代码中,我看到了一个奇怪的模式。在操作某个变量时,作者一直在变量和递增/递减运算符之间放置一个空格。例如,下面是源代码中的第 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变量交互时始终这样做,因此我认为这一定是经过深思熟虑的选择。此外,在设置循环时,开发人员不会在变量和递增/递减运算符之间设置间隙。这意味着它是有针对性的和一致的行为。

关于递增/递减运算符的 Mozilla 文档只提到了前置和附加递增/递减运算符之间的区别。他们不讨论增加差距。我对javascript相当满意,但我当然不是专家。所以我问你,有没有办法解决他们的疯狂,或者这只是一种奇怪的特质?


我想明确表示,我的意思不是对原始开发人员的不尊重。他的例子对我来说是宝贵的学习工具。我只是想确保我理解细微差别。

根据空白规范 (ES6):

空格码位用于提高源文本的可读性,并将标记(不可分割的词汇单元)彼此分开但在其他方面无关紧要

对于您引用的代码,所涉及的标记是++标点符号和标识符名称。


要回答您的问题:

所以我问你,有没有办法解决他们的疯狂,或者这只是一种奇怪的特质?

没有功能差异,纯粹是品味问题。


请记住,只有在分号被显式添加到代码中(由程序员)之前,这才适用。如果不是这种情况,自动分号插入就会出现,在某些情况下可能会有功能差异。你可以在这里阅读: https://www.ecma-international.org/ecma-262/6.0/#sec-examples-of-automatic-semicolon-insertion

作业测试

i = 0;
j = 0;
i++;
j  ++;
console.log(i === j);

返回测试

j = 0;
x1 = j++;
j = 0;
x2 = j  ++;
console.log(x1 === x2);

两个测试都注销true

最新更新