연산자 우선순위 연산자 우선순위 표현식에 연산자가 여러 개 있을 경우 처리되는 규칙 우선 기본적인 우선순위 부터 알아보자 = 연산자 > && , || > ? : 이때, &&는 항상 || 보다 먼저 평가된다. 1) 단락 평가 &&, || 연산자는 좌측 피연산자의 평가 결과만으로 전체 결과가 이미 결정될 경우 우측 피연산자의 평가를 건너뛴다. 그래서 단락이라는 말이 유래되어 단락 평가 특성을 갖는다. const doSomething = (opts) => { if(opts && opts.cool){ ... } } 위의 코드에서 opts가 유효하지 않으면 opts.cool의 평가를 자동으로 건너뛴다. 이로써 불필요한 작업이 줄어들게 된다. 2) 끈끈한 우정 이번에는 삼항 연산자 ?와 : 를 이용해 연산자의 우선..
JavaScript/You Don't know JS
문과 표현식 자바스크립트에서 문과 표현식은 중요한 차이가 있다. var a = 3 * 6; var b = a; b; 3 * 6은 표현식이다. 두번째 줄과 세번째 줄 또한 표현식이다. var a = 3 * 6, var b = a 두 문은 각각 변수를 선언 하므로 선언문 이라 한다. a = 3 * 6 이나 b = a는 할당 표현식 이라 한다. 세번째 줄은 표현식의 전부이지만 이것만으로 완벽한 문이다. 일반적으로 이 문은 표현식 문이라 한다. 1 - 문의 완료 값 모든 문은 완료 값을 갖는다. 심지어 undefined값을 갖을 수 있어도 갖는다. var문의 완료값은 undefined이다. 실제로 var a = 42를 콘솔창에 실행시켜 보면 42 대신 undefined가 나온다. 이는 콘솔이 실행한 문의 완료 ..
목차 값 변환 추상 연산 명시적 강제변환 암시적 변환 느슨한/엄격한 동등 비교 추상 관계 비교 1. 값 변환 타입 캐스팅 강제 변환 구분 어떤 값의 타입을 바꾸는 과정이 명시적이면 타입 캐스팅이다. (정적타입 언어에서 컴파일시점에 발생) 어떤 값의 타입을 바꾸는 과정이 암시적이면 강제 변환이다. (동적타입 언어에서 런타임시점에 발생) 명시적 강제변환 : 코드에서 의도적으로 타입 변환을 일으키는 것이 명백 const a = 42; const b = String(a);// 명시적 "42" 암시적 강제변환 : 다른 작업 도중 불분명한 부수효과로 부터 발생한 타입 변환 2. 추상 연산 -ToString 문자열이 아닌 값 → 문자열 변환은 ToString 추상 연산 로직이 담당한다. 내장 원시 값은 본연의 문자열..
Chapter 3 네이티브 네이티비는 내장된 함수이다. 가장 많이 쓰는 네이티브 - String() ➡ 네이티브는 생성자 처럼 사용 가능하지만, 실제 생성되는 원시값이 아닌 원시 값을 감싼 객체 타입이다. - Number() - Bollean() - Array() - Object() - Function() - Date() - Error() - Symbol() 3️⃣.1️⃣ 내부[[class]] typeof 가 object인 값에는 [[class]]라는 내부 프로퍼티가 있지만(전통적인 클래스 보다는 내부 분류법의 일부), 이 프로퍼티는 Object.proptype.toString()에 메서드를 넣어 호출해야 접근 가능하다. 배열은 "Array", 정규식은 "RegExp" 내부 [[class]]값이 있다. ..
2️⃣.4️⃣ 특수값 : JS개발자들이 조심해야 하는 특수값들 2️⃣.4️⃣.1️⃣ 값이 아닌 값 undefined 타입의 값은 undefined, null 타입의 값은 null 뿐이다 ( 타입과 값이 같다 ) null : 빈 값이다. 값이 있었지만 현제는 없는 상태 (식별자가 아닌 키워드로, null이라는 변수에 할당 X) undefined : 실종된 값. 값을 아직 갖지 않은 것 (undefined는 식별자로 사용가능) 2️⃣.4️⃣.2️⃣ Undefined 느슨한 모드에서는 전역 스코프에서 undefined란 식별자에 값을 할당할 수 있다. // 이 두개 모두 비추이다... 하지만 모드에 상관없이 undefined라는 이름을 갖는 지역변수를 생성할 수 있다. // 이 두개 모두 비추이다... voi..
2️⃣.1️⃣ 배열 JS 배열은 문자열, 숫자, 객체, 다른배열( 다차원 배열 )을 담을 수 있는 그릇이다. const a = [1, "2", [3]]; console.log(a); // [1, '2', [3]] a[3] = 4; console.log(a.length); // 4 a["key"] = "value"; console.log(a); // [1, '2', [3], 4, key: 'value'] console.log(a.length); // 4 또한 빈 배열을 주의하자. 그리고 값은 나중에 추가할 수 있다 let b = []; b[0] = 1; b[2] = 3; console.log(b); // [1, empty, 3] 이때는 a[1]에 undefined 하는 것과는 다르다. console.log..