关于Javascript变量初始化的建议

这个问题在这里已经有了答案:

  • 使用JavaScript 6多个左侧分配的答案

  • 除非你知道你正在创建一个全局变量(无论如何,这通常被认为是不好的做法),但这并不好。

    如果你来自Java这样的语言,那么很自然的做一些事情:

    int foo = bar = 0;
    

    在当前范围内,两个变量foo和bar都将使用值0初始化。 但在Javascript中:

    var foo = bar = 0;
    

    将在当前作用域和全局变量栏内创建变量foo。


    问题

    我正在调试我正在写一个小时左右的游戏,然后才明白我的错误。 我有一个代码:

    function Player() {
        var posX = posY = 0;
    }
    
    function Bullet() {
        var posX = posY = 0;
    }
    
    var player = new Player;
    var bullet = new Bullet;
    

    变量posY是全球性的。 对一个对象改变posY值的任何方法也会改变其他对象的方法。

    发生了什么:每当一个子弹对象垂直移动通过​​屏幕(改变它自己的posY)时,玩家对象将被传送到子弹的Y坐标。

    通过简单地将变量声明分隔为:

    var posX = 0;
    var posY = 0;
    
    链接地址: http://www.djcxy.com/p/69975.html

    上一篇: Advice on Javascript variable initialization

    下一篇: Proper way of multiple variable assignment in Javascript