我在一些javascript示例中看到过这种类型的代码,我一直在看工作。我想,但我不确定tempBall应该是一个具有属性的对象,例如x,y,nextX,nextY等等。
是否有更可读的方式可以完成此操作并使代码工作相同。声明像
这样的变量对我来说似乎很奇怪var tempBall;
然后开始向变量添加属性。
问题:您是否可以声明一个var变量,然后在其中分配属性,是否有更好的做法可以遵循?
代码:
var tempBall;
tempBall = {x:tempX,y:tempY, nextX: tempX, nextY: tempY, radius:tempRadius, speed:tempSpeed, angle:tempAngle, velocityx:tempvelocityx, velocityy:tempvelocityy, mass:tempRadius};
答案 0 :(得分:0)
JavaScript在声明对象后有两种主要的方法来分配属性:
var tempBall = {};
// Explicitly named property
tempBall.foo = 'bar';
// Property name as a string
tempBall['foo'] = 'bar';
// You can also pass a variable rather than a static string
var key = 'foo';
tempBall[key] = 'bar';
答案 1 :(得分:0)
问题:您是否可以声明一个var变量,然后在其中分配属性,是否有更好的做法可以遵循?
我认为你可能指的是这样的事情;
function dothings(){
var anArray=[],
i=0,
j=0,
ball,
person;
//... do some stuff
person = { name: "..." };
ball = { x: 0, y: 0 };
// etc..
}
为什么在函数开头声明所有 vars 而不是在需要时声明? (也许这就是你要找的东西)
如果是这样的话,基本上可以免除你在评论
中提到的变量提升的麻烦此外,克罗克福德也这么说。所以这是惯例。 http://javascript.crockford.com/code.html请参阅变量声明
答案 2 :(得分:-1)
在javascript中你可以去:
var tempBall = {x:tempX,y:tempY, nextX: tempX, nextY: tempY, radius:tempRadius, speed:tempSpeed, angle:tempAngle, velocityx:tempvelocityx, velocityy:tempvelocityy, mass:tempRadius};
如果您需要首先声明变量并且稍后分配值,那么唯一的一次是获取变量范围。
假设我有一个全局变量tempBall,我想在函数中设置它的属性,但仍然保持全局可用:
var tempBall;
function someFuntion(someInput){
tempBall = someInput;
}
在此处阅读有关javascript变量范围的更多信息:
http://msdn.microsoft.com/en-us/library/bzt2dkta(v=vs.94).aspx
答案 3 :(得分:-1)
第一次阅读时,JavaScript可能会让人感到困惑,因为它并不能帮助您声明变量的类型。任何未声明的变量的默认值是未定义的。
所以,你可以做到
var tempBall = {};
tempBall = {x:tempX,y:tempY, nextX: tempX, nextY: tempY, radius:tempRadius, speed:tempSpeed, angle:tempAngle, velocityx:tempvelocityx, velocityy:tempvelocityy, mass:tempRadius};
tempBall.foo = 'bar';
或只是
var tempBall = {x:tempX,y:tempY, nextX: tempX, nextY: tempY, radius:tempRadius, speed:tempSpeed, angle:tempAngle, velocityx:tempvelocityx, velocityy:tempvelocityy, mass:tempRadius};
但是没有什么能阻止你在下一行做这件事:
tempBall = 'str';
当然,我不是建议你这样做:)。