Javascript中多变量赋值的正确方法

Javascript中多变量赋值的正确方法,javascript,Javascript,这里的赋值是右关联的,因此赋值为100 这是一种坏习惯。更好的版本是 (function(){ var b1 = b2 = b3 = b4 = 100; })(); console.log(b1); //100 console.log(b2); //100 console.log(b3); //100 console.log(b4); //100 问:有没有这样的错误分配 (function(){ 'use strict'; var b1 = 100, b2 = 10

这里的赋值是右关联的,因此赋值为100

这是一种坏习惯。更好的版本是

(function(){
    var b1 = b2 = b3 = b4 = 100;
})();

console.log(b1); //100
console.log(b2); //100
console.log(b3); //100
console.log(b4); //100
问:有没有这样的错误分配

(function(){
  'use strict';
   var b1 = 100,
   b2 = 100,
   b3 = 100,
   b4 = 100;
})();

可能是首选,还是永远不要使用?

这不好,因为这两个代码示例并不相同。第一个等于:

var b1 = b2 = b3 = b4 = 100; 
因此,您只在局部范围中定义
b1
,而
b2..b4
是全局声明的。这意味着必须完全避免这种情况

我也非常怀疑console.log(b1)根据您的示例输出
100

var b1;
b4 = 100;
b3 = b4;
b2 = b3;
b1 = b2;

是项目/团队约定的主题。从技术角度来看,使用它是可以的。

这不好,因为这两个代码示例并不相同。第一个等于:

var b1 = b2 = b3 = b4 = 100; 
因此,您只在局部范围中定义
b1
,而
b2..b4
是全局声明的。这意味着必须完全避免这种情况

我也非常怀疑console.log(b1)根据您的示例输出
100

var b1;
b4 = 100;
b3 = b4;
b2 = b3;
b1 = b2;


是项目/团队约定的主题。从技术角度来看,使用它是可以的。

我认为你最好把时间花在分析需要解决的问题上。糟糕的做法,我的屁股。如果你有四个相等的值,链式赋值是唯一最可靠的方法。虽然您确实希望变量首先存在。@Mathletics它绝对不是“基于意见的”。
var
语句仅在第一个(最左边的)
=
符号的左边声明变量。其余的都是隐式全局引用。@cHao我希望你不要真的这样做,因为这是错误的。@Pointy:上面的做法是错误的。但是
a=b=c=d=0绝对没有错。我认为你最好把时间花在分析需要解决的问题上。糟糕的做法,我的屁股。如果你有四个相等的值,链式赋值是唯一最可靠的方法。虽然您确实希望变量首先存在。@Mathletics它绝对不是“基于意见的”。
var
语句仅在第一个(最左边的)
=
符号的左边声明变量。其余的都是隐式全局引用。@cHao我希望你不要真的这样做,因为这是错误的。@Pointy:上面的做法是错误的。但是
a=b=c=d=0绝对没有错。你基本上是对的,但是没有理由期望
b1
不会以正确的值结束,是吗?在答案的开始部分,我说“准确!”在第二部分,我认为这是不对的。@zerkms-我明白了,你是指IIFE上下文。是的,我会收回你说的没错。@zerkms-oh-durr。就像我说的,我不相信我的判断:)事实上,@zerkms是完全正确的。我没有考虑到对
console.log
的调用在OP中的位置。你基本上是对的,但是没有理由期望
b1
不会以正确的值结束,是吗?在答案的最初部分,我在第二部分说,“正是!”我认为这不正确。@zerkms-我明白了,你是说那里的生活环境。是的,我会收回你说的没错。@zerkms-oh-durr。就像我说的,我不相信我的判断:)事实上,@zerkms是完全正确的。我没有考虑到OP中对
console.log
的调用的位置。