阅读在线文档时,我对如何在一行中正确定义多个JavaScript变量感到困惑。
如果我想压缩以下代码,那么在JavaScript“严格”方式下,如何在单行上定义多个javascript变量?
var a = 0;
var b = 0;
它是:
var a = b = 0;
或者。var a = var b = 0;
etc...
阅读在线文档时,我对如何在一行中正确定义多个JavaScript变量感到困惑。
如果我想压缩以下代码,那么在JavaScript“严格”方式下,如何在单行上定义多个javascript变量?
var a = 0;
var b = 0;
它是:
var a = b = 0;
或者。var a = var b = 0;
etc...
使用Javascript的es6或node,您可以做到以下事情:
var [a,b,c,d] = [0,1,2,3]
如果你想要在一行中轻松打印多个变量,只需这样做:
console.log(a, b, c, d)
0 1 2 3
这类似于 @alex gray 在这里的回答,但这个例子是用Javascript而不是CoffeeScript编写的。
请注意,这里使用了Javascript的数组解构赋值
console.log(a,b,c,d)
呢?它更短,并且输出相同。 - Josh Broadhurstlet {a,b,c,d} = {"a":0,"b":1, "c":2, "d":3}
- devaaron>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]
它们都引用内存中的同一对象,它们并不是“唯一”的,因为每当你引用一个对象(数组、对象字面量、函数)时,它是按引用而非按值传递的。所以,如果你只改变其中一个变量,并希望它们单独起作用,你将无法得到想要的结果,因为它们不是单独的对象。
多重赋值也有一个缺点,即次要变量变成全局变量,你不希望泄漏到全局命名空间。
(function() { var a = global = 5 })();
alert(window.global) // 5
最好只使用逗号,并且最好有很多空格,这样更易读:var a = 5
, b = 2
, c = 3
, d = {}
, e = [];
ReferenceError
异常... 在我看来,应该避免使用它们... - Christian C. Salvadó无法使用赋值作为值在一行中完成。
var a = b = 0;
将 b 声明为全局变量。一种正确的方法(不会造成变量泄露)是稍微冗长一些:
var a = 0, b = a;
这在以下情况下很有用:
var a = <someLargeExpressionHere>, b = a, c = a, d = a;
为什么不分两行写呢?
var a, b, c, d; // All in the same scope
a = b = c = d = 1; // Set value to all.
这样做的原因是为了保留变量声明的本地作用域,就像这样:
var a = b = c = d = 1;
会导致 b
、c
和 d
在全局作用域中隐式声明。
const person = { name: 'Prince', age: 22, id: 1 };
let {name, age, id} = person;
console.log(name);
console.log(age);
console.log(id);
* 变量名和对象索引必须相同
针对提问者所询问的问题,如果您想要使用相同的值(例如0
)初始化N个变量,您可以使用数组解构和Array.fill来将一个由N个0
组成的数组分配给这些变量:
let [a, b, c, d] = Array(4).fill(0);
console.log(a, b, c, d);
let x = y = z = 0
let [x, y, z] = [10, 30, 50]
console.log(x, y, z) // 10 30 50
压缩后的类型在这里:
var a, b = a = "Hi";
& 对于3个变量:
var x, y, z = x = y = "Hello";
希望能够有所帮助!
请注意,您只能对数字和字符串执行此操作。
你可以做...
var a, b, c; a = b = c = 0; //but why?
c++;
// c = 1, b = 0, a = 0;
这是完全正确的:
var str1 = str2 = str3 = "value";
如果更改其中一个变量的值,其他变量的值不会更改:
var str1 = str2 = str3 = "value";
/* Changing value of str2 */
str2 = "Hi Web!";
document.write("str1 = " + str1 + " - str2 = " + str2 + " - str3 = " + str3);
var $cls = my.namespace.Foo = function(args){ ... }
。 - blong