조건문, if...else, if...else if, truthy, falsy, 논리 연산자 , &&, ||, !
문자열.length, split(), slice(), toUpperCase(), toLowerCase(), Math 객체, 표준 내장 객체
프로그램의 순차적인 흐름을 제어하는 실행문을 제어문이라고 한다.
조건문은 평가식의 결과에 따라 계산 결과가 달라지는 제어문이다.
조건문의 평가식은 true 또는 false로 평가된다.
비교 연산자를 사용해 값이 true인지 false인지 평가할 수 있다.
비교 연산자는 ==와 ===가 있는데, ===를 사용할 것을 권장한다.
🙋♀️ 왜 ==를 사용하면 안 되나요? 둘의 차이가 무엇인가요?
👉==
는 피연산자의 자료형이 다를 경우 암묵적인 형변환을 통해 타입을 통일해서 비교합니다. 이러한 작동 원리는 ECMAScript 명세에"추상적 동등 비교 알고리즘"
(The Abstract Equailty Comparison Algorithm)으로 정의되어 있습니다. 따라서 서로 다른 자료형의 값을 ==으로 비교하게 될 경우, 형변환을 하는 과정에서 피연산자의 값이 동일해질 수도 있습니다. 이는 개발자가 의도하지 않은 결과를 반환할 수 있으므로 피연산자의 타입이 일치하는 지까지 비교하는===
를 사용할 것을 권장하는 것입니다. (참고로, 위와 같은 이유를 생각하면"==는 타입을 비교하지 않는다"
는 표현 또한 정확하지 않는다는 것을 알 수 있습니다. 타입을 비교하지 않는 것이 아니라, 내부 알고리즘에 따라 암묵적인 형변환을 통해 타입을 통일해서 비교합니다. (출처: How does Abstract Equality Comparison work?)
실제 데이터 타입은 boolean이 아니지만 평가식에서 true 또는 false로 평가되는 값을 truthy value 또는 falsy value라고 한다.
falsy 값은 다음과 같다: 숫자 0, null, undefined, NaN, 빈 문자열, false(당연하지만!)
위에서 언급한 falsy 값을 제외한 다른 값은 평가식에서 true로 평가된다.
어떤 값이 NaN인지 아닌지를 판별할 때는 비교 연산자를 사용할 수 없다.
대신 isNaN()이라는 함수를 사용해 판별할 수 있다.
논리 연산자는 AND 연산자 &&, OR 연산자 ||, NOT 연산자 !가 있다.
문자열.length는 string 객체의 속성이다.
split() 메서드로 구분자를 기준으로 문자열을 배열에 담을 수 있다.
특히 split() 메서드는 csv 파일을 파싱할 때 많이 사용한다고 한다.
🙋♀️ csv가 뭔가요? 개발할 때 많이 쓰는건가요?
👉 'comma seperated variables'의 줄임말로, 쉼표로 구분된 텍스트 데이터 및 텍스트 파일을 의미합니다. 엑셀에서 많이 쓴다고 합니다.
slice() 메서드는 문자열의 일부를 잘라서 반환한다.
toUpperCase()와 toLowerCase()는 원본 문자열을 변경하지 않는다.
slice() 메서드와 toUpperCase(), toLowerCase()는 원본 문자열을 변경하지 않는다. 이렇게 원본 데이터를 변경하는 메서드와 그렇지 않은 메서드를 각각 mutable, immutable하다고 한다.
Math 객체는 자바스크립트 엔진이 기본적으로 제공하는 객체다.