我想要将两个变量声明为相同的值(false)。
我倾向于在很多地方这样做(比如,我在几乎每个我原型化的对象中都这样做)。
var $a= {border:false
,frame:false};
或者另一种选择是:
border=false;frame=false;
我是否有更好的方法可以同时声明这两个变量的值?(例如,一个代码高尔夫解决方案)
我想要将两个变量声明为相同的值(false)。
我倾向于在很多地方这样做(比如,我在几乎每个我原型化的对象中都这样做)。
var $a= {border:false
,frame:false};
border=false;frame=false;
我是否有更好的方法可以同时声明这两个变量的值?(例如,一个代码高尔夫解决方案)
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
。
var border = frame = false;
frame
成为全局变量,或者至少不在与 border
相同的作用域中定义它(如果之前没有声明过的话)。 - Felix Kling考虑:
var border, frame;
border = frame = false;