有没有办法在 JavaScript 中像这样执行多个赋值:
var a, b = "one", "two";
这将等同于:
var a = "one";
var b = "two";
有没有办法在 JavaScript 中像这样执行多个赋值:
var a, b = "one", "two";
这将等同于:
var a = "one";
var b = "two";
在ES6中,您可以以这种方式实现:
var [a, b] = ["one", "two"];
上面的代码是ES6符号,称为数组解构/对象解构(如果它是一个对象)。
您在表达式的右侧提供数组,并在左侧用方括号括起来的逗号分隔变量。
第一个变量映射到第一个数组值,依此类推。
var [a, b] = [1,2,3,4,5]
- webdebvar a, b = "one", "two";
来将它们分别赋值给每个变量,但你可以使用var a, b;
将这些变量初始化为undefined
。
你也可以使用var a, b = 'foo';
将'b'赋值为'foo',同时将'a'初始化为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"
看起来像:
const user = {
id: 42,
is_verified: true
};
const {id, is_verified} = user;
console.log(id); // 42
console.log(is_verified); // true
从模块中导入多个输出。这将同时插入foo和bar到当前作用域中。
import {foo, bar} from '/modules/my-module.js';
var a = "one", b = "two";
a = "ONE", b = "TWO";
我想扩展Ryan的答案 - 特别是在涉及for循环时。通常情况下,人们可能会将for循环写成:
for (var i = 0; i < arr.length; i++) {
for (var i = arr.length-1; i >= 0; i--) {
然而,当顺序相关时,这种方法会导致问题 - 更不用说它是不常见的符号和不清晰的了。为了解决这个问题,您可以这样构造:
for (var i = 0, z = arr.length; i < z; i++) {
虽然不像标准循环那样简洁,但相比反向循环,它在表现上更好,同时阅读起来也更加容易。
不,你不能这样做。Javascript不支持这种类型的声明。