[javascript] Javascript 한 줄에 여러 변수를 정의하는 방법은 무엇입니까?

온라인 문서를 읽으면서 한 줄에 여러 JavaScript 변수를 올바르게 정의하는 방법을 혼동하고 있습니다.

다음 코드를 압축하려면 한 줄에 여러 자바 스크립트 변수를 정의하는 적절한 자바 스크립트 “엄격한”방법은 무엇입니까?

var a = 0;
var b = 0;

그것은 :

var a = b = 0;

또는

var a = var b = 0; 

기타…



답변

다중 할당 구조에 의존하면 한 지점 또는 다른 지점에서 발을 쏠 것이기 때문에 쉼표에 의존하고 싶습니다.

예는 다음과 같습니다.

>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]

그것들은 모두 메모리에서 동일한 객체를 참조하며, 객체 (배열, 객체 리터럴, 함수)에 대한 참조를 만들 때마다 값이 아닌 참조로 전달되기 때문에 “고유 한”것이 아닙니다. 따라서 이러한 변수 중 하나만 변경하고 개별적으로 작동하도록하려면 개별 개체가 아니기 때문에 원하는 것을 얻지 못할 것입니다.

또한 다중 할당에는 2 차 변수가 전역이되고 전역 네임 스페이스로 유출되는 것을 원하지 않는다는 단점이 있습니다.

(function() {  var a = global = 5 })();
alert(window.global) // 5

쉼표 만 사용하는 것이 가장 좋으며 가급적이면 많은 공백을 사용하여 읽을 수 있습니다.

var a = 5
  , b = 2
  , c = 3
  , d = {}
  , e = [];


답변

Javascript의 es6 또는 노드를 사용하여 다음을 수행 할 수 있습니다.

var [a,b,c,d] = [0,1,2,3]

한 줄에 여러 변수를 쉽게 인쇄하려면 다음과 같이하십시오.

console.log(a, b, c, d)

012 3

이것은 @alex gray의 답변과 비슷하지만이 예제는 CoffeeScript 대신 Javascript로되어 있습니다.

이것은 Javascript의 배열 분해 할당을 사용 합니다.


답변

값으로 할당을 한 줄로 할 수있는 방법은 없습니다.

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집니다.


답변

다음은 한 줄에 여러 변수를 선언하는 새로운 ES6 방법입니다.

const person = { name: 'Prince', age: 22, id: 1 };

let {name, age, id} = person;

console.log(name);
console.log(age);
console.log(id);

* 변수 이름과 개체 인덱스는 동일해야합니다.


답변

특히 OP가 요청한 내용에 대해 동일한 값 (예 🙂 으로 N 개의 변수를 초기화 0하려면 배열 분해Array.fill 을 사용 하여 N 배열을 변수에 할당 할 수 있습니다 0.

let [a, b, c, d] = Array(4).fill(0);

console.log(a, b, c, d);


답변

숫자와 문자열로만이 작업을 수행 할 수 있습니다.

당신은 할 수 있습니다 …

var a, b, c; a = b = c = 0; //but why?

c++;
// c = 1, b = 0, a = 0;