设置变量值的简写

时间:2011-06-22 19:45:32

标签: javascript shorthand

我试图将2个变量声明为相同的值(false)。

我倾向于在整个地方做这件事(比如几乎每个我原型的对象)

var $a= {border:false
,frame:false};

或者

border=false;frame=false;

有没有更好的方法可以同时声明两者的值? (例如代码高尔夫解决方案)

3 个答案:

答案 0 :(得分:3)

如果在设置值时声明了两个变量,则可以。这有点古怪,但它有效:

var frame, 
    border = frame = false;

(这是我认为最短的时间)

更好吗?我不这么认为,你真的没有多少钱。更具可读性

var frame = false, 
    border = false;

实际上你可以做更多的组合,但如果不重复变量名或值,你就无法做到。例如。你也可以这样做:

var frame = false, 
    border = frame;

当然这仅适用于原始值(即布尔值,(文字)数字,(字面)字符串)。如果处理对象(包括数组),则两个变量都将引用同一对象。在这种情况下,您必须单独初始化它们:

var frame = {}, 
    border = {};

// DON'T DO THIS:
var frame, 
    border = frame = {};

更新,因为我觉得有必要解释为什么var border = frame = false; 工作:

var此处不具有传递性,此表达式实际上是从右到左进行评估的。首先,false被分配给frame,它将在范围链中查找,在最坏的情况下将变为全局。然后将frame的值分配给局部变量border

答案 1 :(得分:2)

你可以这样做:

var border = frame = false;

答案 2 :(得分:1)

考虑:

var border, frame;

border = frame = false;