gpt4 book ai didi

javascript - 如何在单个声明中将多个局部变量设置为相同的值?

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:09 26 4
gpt4 key购买 nike

考虑以下几点:

(function(){
var foo = bar = 1;
}());
  • foo 将是函数的局部变量
  • bar 将是窗口的全局变量

由于它们的作用域,两个变量在函数内的值都为 1,但 bar 将在函数外(在全局范围内)持续存在。

我很好奇是否有一种方法可以使用赋值运算符无需循环或对象来初始化变量。我正在寻找可以使 bar 成为局部范围的关键字或前缀。这个想法是干的和高效的。


编辑:上面的例子很简单。一种选择,使用 10 个变量,可能是在初始化之前将变量预先声明到本地范围:

var foo, bar, baz, foobar, foobaz, bazfoo, barbaz,
bazbar = foo = bar = baz = foobar = foobaz = barbaz = true;

但是,这样做既重复又难以阅读。一个人可以使用数组或对象,但这有点不太清晰而且更困惑。

背景是另一位开发人员在函数内部执行 var foo = bar = true,我指出这只是设置一个局部变量。他们没有意识到这一点,想要改变并询问是否可以内联和设置多个局部变量,而无需多次键入每个局部变量(并且不重构带有数组或对象的代码)。

最初问这个问题时,我接触过 ES6,但还没有完全阅读文档。我的想法是 ES6 有一些不错的特性(例如,rest、解构赋值),因此它也许还提供了一种方法,可以将一大块变量大量初始化为相同的范围和值。

最佳答案

您不能(或不应该)为未声明的变量赋值。

然后,当你想声明多个具有相同值的变量时,你可以

  • 为每个变量分配相同的值:

    var var1 = value,
    var2 = value,
    /* ... */
    varN = value;

    如果 value 是一个昂贵的表达式,您可以使用 var1 而不是重复 value 以避免每次都重新计算它,例如

    var foo = 1, bar = foo;
  • 首先声明所有变量,然后为所有变量赋值:

    var var1, var2, /* ..., */ varN;
    var1 = var2 = /* ... = */ varN = value;

    您可以在一条语句中完成并避免重复最后一个变量,例如

    var foo, bar = foo = 1;
  • 如果你真的想避免重复变量和值,你可以尝试 destructuring assignment[].fill :

    var [var1, /*...*/ varN] = new Array(n).fill(value);

    但我不推荐它,因为它会创建一个无用的数组。

关于javascript - 如何在单个声明中将多个局部变量设置为相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35903822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com