mlibre
mlibre

Reputation: 2540

How to assign multiple variables at once in JavaScript?

Is there any way to perform multiple assignment in JavaScript like this:

var a, b = "one", "two";

which would be equivalent to this:

var a = "one";
var b = "two";

Upvotes: 32

Views: 35101

Answers (5)

RobynStarveling
RobynStarveling

Reputation: 21

I wanted to extend Ryan's answer - particularly when it comes to for loops. Normally one might write a for loop as:

for (var i = 0; i < arr.length; i++) {

As many contend, the interpretive nature of JS causes arr.length to be reevaluated on every loop - causing performance loss on large loops (depending on the nature of the upper-bound, e.g., a function). When performance is paramount, they suggest iterating backward:

for (var i = arr.length-1; i >= 0; i--) {

However, this approach will cause problems when order is relevant - not to mention being uncommon notation and unclear. To get around this problem, you can construct it thusly:

for (var i = 0, z = arr.length; i < z; i++) {

While not as succinct as a standard loop, it performs better whilest being easier to read than a reverse loop.

Upvotes: 0

Ryan
Ryan

Reputation: 1226

If you aren't absolutely married to the idea of the values being at the end of the statement, this works:

var a = "one", b = "two";

If you want to assign to variables that have already been declared, you can use the comma operator to make it a one-liner.

a = "ONE", b = "TWO";

Upvotes: 0

Danny
Danny

Reputation: 4114

While you cannot do var a, b = "one", "two";, and get them assigned to each variable in the respective order, you can do: var a, b; to initialize these variables as undefined.

You can also do var a, b = 'foo'; to assign b to 'foo', while initializing 'a' as undefined.

var a, b;

> a
--> undefined
> b
--> undefined
> var d, e;

> e
--> undefined

> f 
--> Uncaught ReferenceError: f is not defined

> var c, g = 'foo';

> c
--> undefined
> g
--> "foo"

Object destructuring

looks like:

const user = {
  id: 42,
  is_verified: true
};

const {id, is_verified} = user;

console.log(id); // 42
console.log(is_verified); // true 

You will also see this in JavaScript to import members of a module:

Import multiple exports from module. This inserts both foo and bar into the current scope.

import {foo, bar} from '/modules/my-module.js';

Upvotes: 12

Piyush.kapoor
Piyush.kapoor

Reputation: 6803

In ES6 you can do it this way:

var [a, b] = ["one", "two"];

The above code is ES6 notation and is called array destructuring/object destructuring (if it's an object).

You provide the array on the right-hand side of the expression and you have comma-separated variables surrounded by square brackets on the left-hand side.

The first variable maps to the first array value and so on.

Upvotes: 67

Shobhit Walia
Shobhit Walia

Reputation: 496

No you can not do this way. Javascript doesn't support this type of declaration

Upvotes: -13

Related Questions