在线阅读文档,我对如何在一行上正确定义多个JavaScript变量感到困惑.
如果我想压缩以下代码,那么在一行中定义多个javascript变量的JavaScript"严格"方法是什么?
var a = 0;
var b = 0;
Run Code Online (Sandbox Code Playgroud)
是吗:
var a = b = 0;
Run Code Online (Sandbox Code Playgroud)
要么
var a = var b = 0;
Run Code Online (Sandbox Code Playgroud)
等等...
med*_*iev 67
你想依靠逗号,因为如果你依赖于多重赋值结构,你将会在一个或另一个角落射击自己.
一个例子是:
>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]
Run Code Online (Sandbox Code Playgroud)
它们都引用内存中的同一个对象,它们不是"唯一的",因为任何时候你引用一个对象(数组,对象文字,函数)它都是通过引用而不是值传递的.因此,如果您只更改其中一个变量,并希望它们单独行动,那么您将无法得到您想要的变量,因为它们不是单个对象.
多重赋值还有一个缺点,即辅助变量变为全局变量,并且您不希望泄漏到全局命名空间中.
(function() { var a = global = 5 })();
alert(window.global) // 5
Run Code Online (Sandbox Code Playgroud)
最好只使用逗号,最好使用大量的空格,以便它可读:
var a = 5
, b = 2
, c = 3
, d = {}
, e = [];
Run Code Online (Sandbox Code Playgroud)
mod*_*tos 46
使用Javascript的es6或节点,您可以执行以下操作:
var [a,b,c,d] = [0,1,2,3]
Run Code Online (Sandbox Code Playgroud)
如果您想在一行中轻松打印多个变量,请执行以下操作:
console.log(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)
0 1 2 3
这类似于@alex grey的答案,但这个例子是用Javascript而不是CoffeeScript.
Mat*_*hen 38
没有办法在一行中将赋值作为值.
var a = b = 0;
Run Code Online (Sandbox Code Playgroud)
让b全球化.正确的方法(没有泄漏变量)稍长:
var a = 0, b = a;
Run Code Online (Sandbox Code Playgroud)
Nic*_*kis 23
为什么不分两行呢?
var a, b, c, d; //All in the same scope
a = b = c = d = 1; // Set value to all.
Run Code Online (Sandbox Code Playgroud)
原因是,保留变量声明的局部范围,如下所示:
var a = b = c = d = 1;
Run Code Online (Sandbox Code Playgroud)
会导致隐含的声明b,c并d在窗口范围.
小智 14
const person = { name: 'Prince', age: 22, id: 1 };
let {name, age, id} = person;
console.log(name);
console.log(age);
console.log(id);Run Code Online (Sandbox Code Playgroud)
*你的变量名和对象索引必须相同
具体到OP所要求的,如果你想用相同的值初始化N个变量(例如0),你可以使用数组解构和Array.fill将N个数组分配给变量0:
let [a, b, c, d] = Array(4).fill(0);
console.log(a, b, c, d);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142520 次 |
| 最近记录: |