首页 > 解决方案 > 声明并启动多个 javascript 变量

问题描述

对于正确声明和初始化多个相同类型的变量的正确方法,我有点困惑。所以它们实际上是他们自己的,而不是对他人/副本的引用。

我的研究使我得出以下结论,对吗?和/或有更好的方法:

var str1,str2,str3,arr1,arr2,arr3,obj1,obj2,obj3;

str1=str2=str3="foo";

arr1=arr2=arr2=[];

obj1=obj2=obj3={};

(为此我想使用 var,而不是 let 和 const)

标签: javascript

解决方案


我之前回答过一个类似的问题。这是我的答案(相应修改):


有多种方法可以做到这一点。

  1. 重复值:

    var a = 1, b = 1, c = 1;
    
    console.log(a, b, c) //1 1 1

  2. 彼此分配变量(提示:将具有最短名称的变量放在第一位并重复该变量):

    var a = 1, b = a, c = a;
    
    console.log(a, b, c) //1 1 1

  3. 使用您的方法:

    var a, b, c;
    a = b = c = 1
    
    console.log(a, b, c) //1 1 1

  4. 解构一个无限迭代器(这在变量非常多的情况下似乎很有用):

    var [a, b, c] = (function*(v){while(true) yield v})(1);
                                                       // ^--- Value
    
    console.log(a, b, c) //1 1 1


但是,当涉及到对象字面量、函数的返回值和类似的东西时,它们的行为会有所不同(这取决于您应该选择的用例)。

  • 解决方案 1. 将为每个变量创建不同的值

  • 解决方案 2.、3. 和 4. 将为所有变量分配相同的值

  • 解决方案 4. 可以修改,以便分配不同的值:

    var [a, b, c] = (function*(){while(true) yield [1,2,3] })();
                                                // ^^^^^^^--- Value
    
    console.log(a, b, c) //[1,2,3] [1,2,3] [1,2,3]


推荐阅读