이 포스팅에서는 LHS와 RHS의 어원과 방향을 나누는 기준이 무엇인지 소개하여, LHS와 RHS의 차이를 명확히 설명하고자 한다.
LHS와 RHS는 모두 JS 엔진이 변수를 찾기 위해 수행하는 검색 과정을 의미한다.
LHS는 말 그대로 left-hand side 검색을 RHS는 right-hand side 검색을 지칭한다.
left, right를 나누는 기준은 바로 대입 연산(=)의 방향이다.
LHS 검색은 변수가 대입 연산자의 왼쪽에 있을 때 수행하고, RHS 연산은 변수가 대입 연산자의 왼쪽이 아닌 쪽에 있는 경우에 수행한다. LHS 검색은 var a = 2; 와 같은 형태로 변수에 값을 할당해야 하므로, 변수가 저장된 메모리 공간 주소값을 찾는다. 반면 RHS 검색은 특정 변수의 값을 찾는 것과 다름 없다.
1: function foo(a) { // LHS
2: console.log(a); // RHS
3: }
4:
5: let a = 2; // LHS
6: foo(a); // RHS
위 코드의 line5와 line1은 LHS 연산이다. line5의 경우 = 할당연산자가 명확해서 LHS임을 파악하기 쉽다. line1이 LHS 연산인 이유는 내부적으로 매개 변수에 a라는 값을 할당하기 때문이다.
위 코드의 line2, line6은 RHS 연산이다. 대입 연산자를 사용하지 않고 단순히 값을 참조하기 때문이다.
LHS(left-hand side) 검색: 변수가 대입 연산자(=)의 왼쪽에 있을 때 수행하는 검색으로 값을 넣을 변수 컨테이너를 찾는 행위를 지칭
RHS(right-hand side) 검색: 변수가 대입 연산자(=)의 왼쪽이 아닌 편에 있을 때 수행하는 검색으로 특정 변수의 값을 찾는 행위를 지칭
LHS vs RHS
LHS and RHS references in Javascript? Think like a compiler!