IT박스

JavaScript가 if 문에서 쉼표를 허용하는 이유는 무엇입니까?

itboxs 2020. 12. 1. 07:48
반응형

JavaScript가 if 문에서 쉼표를 허용하는 이유는 무엇입니까?


어떤 종류의 구문 분석 오류를 생성해야하는 것처럼 보이지만 그렇지 않은 자바 스크립트 구문을 발견했습니다.

if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid

모든 표현식이 실행되지만 마지막 표현식 만 로직에 영향을 미치는 것 같습니다.

if  (console.log('super'), true) {console.log('splendid')} // super splendid

누구든지 그것이 유효한 자바 스크립트 구문 인 이유를 알고 있습니까? 그것에 대한 실용적인 사용이 있습니까?


쉼표 연산자는 여러 표현식을 함께 연결하고 연산의 결과는 마지막 피연산자의 값입니다. 유일한 실제 용도는 할당 또는 함수 호출과 같은 여러 부작용이 발생할 때입니다.


쉼표 연산자는 각 피연산자 (왼쪽에서 오른쪽으로)를 평가하고 마지막 피연산자의 값을 반환합니다.

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Comma_Operator

https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions_and_Operators#comma_operator


자바 스크립트의 쉼표는 사실 꽤 난해합니다. 내가 본 가장 멋진 용도는 이것입니다

while(doSomething(), checkIfSomethingHappened());

가장 일반적인 것은 var가 현대 js에서 사용되는 방식입니다.

var foo = 1,
    bar = 2;

이것은 루프에 여러 반복기가있을 수있는 대부분의 다른 프로그래밍 언어와 동일합니다.

int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}

참고 URL : https://stackoverflow.com/questions/5347995/why-does-javascript-accept-commas-in-if-statements

반응형