javascript - 您是否有任何理由想要在变量和递增/递减运算符之间留一个空格?

标签 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.movi​​ngTiles 变量。由于开发人员在与 this.movi​​ngTiles 变量交互时始终这样做,我相信这一定是经过深思熟虑的选择。此外,在设置 for 循环时,开发人员不会在变量和递增/递减运算符之间放置间隙。这意味着它是有针对性和一致的行为。

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


我想明确表示,我没有不尊重原开发者的意思。他的例子对我来说是无价的学习工具。我只是想确保我理解其中的细微差别。

最佳答案

根据spec (ES6)在空白处:

White space code points are used to improve source text readability and to separate tokens (indivisible lexical units) from each other, but are otherwise insignificant.

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


回答你的问题:

So I'm asking you is there a method to their madness or is it just a strange idiosyncrasy?

没有功能上的区别,纯粹是品味问题。


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

关于javascript - 您是否有任何理由想要在变量和递增/递减运算符之间留一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827545/

相关文章:

javascript - 如何在按钮中包含图像或文本?

javascript - 传单-可能捕获应用程序引发的异常

javascript - 我如何从 p 标签中获取文本并将其插入到 href 链接中

javascript - 使用 ngCordova 检查 Activity 网络连接,如果在 ionic 中不活动则退出应用程序

javascript - 根据所选数字指定数字范围

javascript - 如何阻止 JavaScript 函数在表单提交时重置

javascript - 如何判断多个js已经动态加载

javascript - 如何在 JavaScript 中缩短对同一对象的多个属性的访问?

javascript - jQuery load() 方法

javascript - Redux reducer 获取字符串而不是对象