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로되어 있습니다.
값으로 할당을 한 줄로 할 수있는 방법은 없습니다.
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);
* 변수 이름과 개체 인덱스는 동일해야합니다.
Specifically to what the OP has asked, if you want to initialize N variables with the same value (e.g. 0
), you can use array destructuring and Array.fill to assign to the variables an array of N 0
s:
let [a, b, c, d] = Array(4).fill(0);
console.log(a, b, c, d);
note you can only do this with Numbers and Strings
you could do...
var a, b, c; a = b = c = 0; //but why?
c++;
// c = 1, b = 0, a = 0;
'program story' 카테고리의 다른 글
C / C ++에서 long long (0) | 2020.09.24 |
---|---|
C #의 차별적 결합 (0) | 2020.09.24 |
Ruby each_with_index 오프셋 (0) | 2020.09.24 |
Haskell에 꼬리 재귀 최적화 기능이 있습니까? (0) | 2020.09.24 |
Google Maps Android API v2를 사용하여 두 지점 사이에 경로 그리기 (0) | 2020.09.24 |