用一个表达式将两个变量分配给相同的值? [复制]

Posted

技术标签:

【中文标题】用一个表达式将两个变量分配给相同的值? [复制]【英文标题】:Assign two variables to the same value with one expression? [duplicate] 【发布时间】:2016-09-03 15:18:42 【问题描述】:

有没有办法将两个变量分配给相同的值?

刚刚试过这个:

let x, y = 'hi'

它正在编译为:

'use strict';

var x = void 0,
    y = 'hi';

【问题讨论】:

let x = 'hi', y = x; - 这是在单个语句中执行此操作的唯一方法。 相关:***.com/a/1758912/5812121 你到底想做什么? 【参考方案1】:

绝对没有理由更喜欢解构赋值而不是简单

let x = 'hi', y = x;

它不仅是一个语句而不是两个语句,而且还避免了额外的分配(所提供的解构解决方案毫无理由地分配了至少一个对象)。

【讨论】:

好的,但是 5 个变量呢? let x = 'hi', a = x, b = x, c = x, d = x。太难读了。 @DmitriPavlutin 只是不要编写要求您创建 5 个相同变量的代码(一开始看起来很尴尬) @zerkms 我想你的意思是说“绝对没有理由更喜欢 解构赋值let x = 'hi', y = x; @BlazeSahlzen 是的,谢谢。【参考方案2】:

是的,有可能:

let x, y;
x = y = 'hi';

称为链式赋值,可以将单个值赋给多个变量。 查看有关assignment operator的更多详细信息。


如果你有两个以上的变量,可以使用数组破坏赋值:

let [w, x, y, z] = Array(4).fill('hi');

【讨论】:

【参考方案3】:

你可以这样做..但我的建议尽量避免它。

var one, two, three;
one = two = three = "";

【讨论】:

JS 本身不使用字符串等明确定义的类型。 我为什么要避免它? @torazaburo 因为这是一个强烈的积极信号,表明您做错了。只需创建一个变量,而不是 3 个具有相同数据的变量。 嗯?如果我有两个或三个不同的变量,我碰巧想初始化为相同的值怎么办? 我真的不在乎,这是一个半愚蠢的问题,但是是的,我可以很容易地想象我有两个计数器的情况,比如说,想将它们都初始化为零。但是,我认为没有理由不直接说var x=0, y=0;【参考方案4】:

这是预期的行为。来自EMCA-262 6th edition:

如果 let 声明中的 LexicalBinding 没有 Initializer 变量被赋值undefinedLexicalBinding 被评估。

【讨论】:

【参考方案5】:
var x = y = 'hi';
alert('x'+x);
alert('y'+y);

Fiddle

【讨论】:

以上是关于用一个表达式将两个变量分配给相同的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript中将多个变量分配给相同的值?

将 MS 访问表中的值分配给变量

当我将一个字典分配给另一个变量时,为啥 Python 会同时更新两个字典? [复制]

在Javascript中将多个变量分配给相同的值

如何将表达式的结果分配给 SQL 替换变量?

PHP中的赋值运算符