多个var和附加||的函数?

Mag*_*les 1 javascript syntax

我在这里这个代码,遇到了一个我不太了解的风格.我对Javascript很新,但这种声明风格让我觉得与我在各种教程中所做的完全不同.

基本上我想知道的是通过这样做完成的是什么?

var Spriter;
(function (Spriter) {
    . . .
})(Spriter || (Spriter = {}));
var Spriter;
(function (Spriter) {
    . . .
})(Spriter || (Spriter = {}));
.
.
.
Run Code Online (Sandbox Code Playgroud)

为什么函数卡在括号之间?是什么(Spriter ||(Spriter = {}))附加到(函数(Spriter){}做什么?为什么'var Spriter;'写了多次?我认为多个'var Spriter'会多余.

至于这是什么,它允许你在Phaser(一个游戏引擎)中使用Spriter(一个值得在2d动画中使用骨骼的动画套件)中创建的动画.

Gee*_*eky 5

var Spriter; (function(Spriter){...})(Spriter ||(Spriter = {}));

此代码执行以下操作

  1. 首先检查是否定义了Spriter变量
  2. 如果Spriter定义了一些值,那么它将获取该值.
  3. 如果没有值,它会将Spriter初始化为空对象

您可以使用以下代码snipetts清楚地理解

var Spriter;
(function (Spriter) {
   alert(Spriter.name);
})(Spriter || (Spriter = {"name":"xyz"}));
Run Code Online (Sandbox Code Playgroud)

var Spriter={"age":10};
(function (Spriter) {
   alert(Spriter.name);
})(Spriter || (Spriter = {"name":"xyz"}));
Run Code Online (Sandbox Code Playgroud)

这里Spriter不为空,它采用Spriter的值并且不显示值名称,因为Spriter对象中没有定义属性作为名称

希望这可以帮助