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";
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";
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.
var [a, b] = [1,2,3,4,5]
–
Brimful 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"
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';
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";
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.
No you can not do this way. Javascript doesn't support this type of declaration
JS
in ES6 you can use Destructuring Assignment –
Tardiff © 2022 - 2024 — McMap. All rights reserved.