Note change = ‘바꿨다’에서 값이 나오는 이유는?
let으로 변수를 선언할 때는 콘솔에 결과로 undefined가 나오지만, 변수의 값을 바꿀 때는 결과로 바꾼 값이 나옵니다. 같은 대입 연산자를 사용했는데 결과가 다른 이유는 무엇일까요?
> let change = '바꿔 봐';
< undefined
> change = '바꿨다';
< '바꿨다'
이는 let의 역할 때문입니다. let이 없을 때는 코드 자체가 식이라서 대입한 값이 결과로 출력되지만, let이 앞에 붙는 순간 선언문이 됩니다. 여기서 문(statement)이라는 개념이 나옵니다. 문은 식과 다르게 결과로 나올 값이 없고 식의 자리에 사용할 수 없습니다. 다만, 결과로 나올 값이 없다고 해서 무조건 문인 것은 아닙니다. console.log()는 결과로 undefined가 나오지만 식입니다. 식의 자리에 사용할 수 있는지 여부가 중요합니다.