用一个表达式将两个变量分配给相同的值? [复制]
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
变量被赋值undefined
当 LexicalBinding 被评估。
【讨论】:
【参考方案5】:var x = y = 'hi';
alert('x'+x);
alert('y'+y);
Fiddle
【讨论】:
以上是关于用一个表达式将两个变量分配给相同的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章