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

时间:2018-04-14 03:17:46

标签: javascript

我正在学习如何使用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中相当舒服,但我当然不是专家。所以我问你是否有一种疯狂的方法,或者只是一种奇怪的特质?

我想说明一点,我的意思是对原始开发者没有任何不尊重。他的例子对我来说是非常宝贵的学习工具。我只是想确保我理解细微差别。

2 个答案:

答案 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