小编cam*_*tem的帖子

在 try 块中返回之后,javascript finally 块的执行顺序是什么

关于:Java try-finally 返回设计问题

这并不能完全回答我的问题,也可能不相关,因为它是 java 而不是 javascript:try、catch 和 finally 中的执行顺序是什么

我知道将 return 放入finally块中将优先于catch块中的 return ,但是序列事件如何与以下代码一起使用?

function confusion(){
  var test = "a";
  try{
    return test;
  }
  finally{
    test = "b";
  }
}

console.log("Result", confusion()); //"a"
Run Code Online (Sandbox Code Playgroud)

我对返回任何东西的一般理解是控制通常返回到调用方法的上下文,因此继续执行的事实让我感到困惑。

在这种情况下,我认为它可能会像这样:

- 函数设置为返回test->finally更改值test->test返回更新后的值。

但相反,它似乎为该try块保留了某种状态并finally错过了时间?

javascript

6
推荐指数
1
解决办法
2898
查看次数

在 Phaser3 类方法之间共享变量的最佳方式是什么?

我试图找到一种干净、可读的方法来管理 Phaser 类中跨函数的变量,但由于各种原因,我对我找到的解决方案不满意。

据我所知可用:

全局变量

我不太喜欢这种实现,因为其他文件可以访问变量的可能性。

var heroes = [];

var play = new Phaser.Class({
    Extends: Phaser.Scene,

    initialize: function(){
        Phaser.Scene.call(this, {key: 'play'});
    },
    create: function () {
        for(var i = 0; i < 5; i++){
            heroes.add(new Hero())
        }
    },
    update: function(){
        if(!heroes.length){
            heroes.add(new Hero())
        }

        heroes.forEach(function(hero){
            if(hero.hp <= 0){
                hero.destroy();
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

DataManager 类(作为注册表实现)

我更喜欢这个,因为它更受控制,但对我来说 DataManager 感觉它是用于配置的,而不是作为在类方法之间处理/共享数据的手段;使用特定服务来获取和设置其值时,访问和更新变量也感觉非常繁琐。

var play = new Phaser.Class({
    Extends: Phaser.Scene,

    initialize: function(){
        this.registry.set('heroes', []);
        Phaser.Scene.call(this, {key: 'play'});
    },
    create: function () {
        var heroes …
Run Code Online (Sandbox Code Playgroud)

javascript phaser-framework

6
推荐指数
1
解决办法
8807
查看次数

标签 统计

javascript ×2

phaser-framework ×1