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
嗯。
总结一下:
- 这是一个链式赋值 (
a = b = c
)
- 链式赋值偶尔是合适的
- 依赖隐式全局变量的恐怖是不合适的;使用严格模式避免误操作
- 称
ballobject
为“处理程序”似乎很奇怪
¹ 好的,所以它真的有点像:
let ball;
const tmp = new AmmobtTransform();
ballObject = tmp;
ball = tmp;
...(tmp
在幕后,并在它结束时消失了)但这只是我的迂腐。 ;-)
现在我正在学习一个教程,做教程的人就是这样做的
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
嗯。
总结一下:
- 这是一个链式赋值 (
a = b = c
) - 链式赋值偶尔是合适的
- 依赖隐式全局变量的恐怖是不合适的;使用严格模式避免误操作
- 称
ballobject
为“处理程序”似乎很奇怪
¹ 好的,所以它真的有点像:
let ball;
const tmp = new AmmobtTransform();
ballObject = tmp;
ball = tmp;
...(tmp
在幕后,并在它结束时消失了)但这只是我的迂腐。 ;-)