javascript 中的这个是什么?这是不好的做法吗?

What this in javascript? Is it bad practice?

现在我正在学习一个教程,做教程的人就是这样做的

let ball = ballObject = new AmmobtTransform(); 

在函数内部使“ball”成为局部变量,同时使“ballObject”成为全局变量。现在,他将“= ballObject”称为 'handler',但我似乎找不到相关文档(我找到了 JavaScript 事件处理程序,例如着陆事件)那么这是什么,它是一个old/new 功能? link 文档就可以了。谢谢。

这是一个链式作业。赋值表达式 (a = b) 有一个结果,即被赋值的值。所以通过做 let ball = ballObject = new AmmobtTransform(); 作者正在做(有效地¹)这个:

ballObject = new AmmobtTransform();
let ball = ballObject;

在某些情况下这样做是合理的。像任何东西一样,它也可能被滥用。 但是:

...to make "ball" a local variable, and "ballObject" a global variable at the same time...

如果你的意思是 ballObject 没有在任何地方声明,作者正在使用该语句创建一个 new 全局变量,而不是仅仅分配给一个变量已经在某些包含范围内声明了,这绝对是不好的做法。它依赖于我所说的The Horror of Implicit Globals。一般情况下,使用严格模式,这样一来就应该出现错误。 :-)

...he calls the "= ballObject" bit a 'handler'...

这似乎很奇怪。构造函数名称 AmmobtTransform 并没有立即向我暗示它是任何一种“处理程序”,如果是,它不仅适用于 ballObject,而且适用于 ball嗯。

总结一下:

  1. 这是一个链式赋值 (a = b = c)
  2. 链式赋值偶尔是合适的
  3. 依赖隐式全局变量的恐怖是不合适的;使用严格模式避免误操作
  4. ballobject 为“处理程序”似乎很奇怪

¹ 好的,所以它真的有点像:

let ball;
const tmp =  new AmmobtTransform();
ballObject = tmp;
ball = tmp;

...(tmp 在幕后,并在它结束时消失了)但这只是我的迂腐。 ;-)