📗
TIL
  • About
  • javascript
    • GoodParts
      • 프로토타입 방식
      • RegexComponent
      • 재귀적 호출 (Recursive Call)
      • 객체를 기술하는 객체
      • 예외 (Exception)
      • 호출
      • 문자열 (Strings)
      • 참조 (Reference)
      • 배열의 특성들
      • 숫자 (Numbers)
      • 메모이제이션 (Memoization)
      • 모듈 (Module)
      • 열거 (Enumeration)
      • 정규 표현식
      • 정규 표현식 객체 생성
      • 프로토타입 (Prototype)
      • 콜백 (Callback)
      • 문장 (Statements)
      • 함수 표현식 요약
      • 의사 클래스 방식 (Pseudoclassical)
      • 함수를 사용한 방식
      • 클로저 (Closer)
      • 배열 (Array)
      • 기본 타입에 기능 추가
      • 자바스크립트 분석
      • 인수 배열(arguments)
      • Function
      • 유효범위(Scope)
    • YouDon'tKnowJS
      • 타입
      • Native
      • 명시적 강제변환
      • 문자열
      • 함수 vs 블록 스코프
      • 클로저
      • 배열
      • 숫자
      • 연산자 우선순위
      • 스코프
      • 암시적 강제변환
      • 래퍼
      • Statement
      • 호이스팅
      • Coercion
    • javascript
Powered by GitBook
On this page

Was this helpful?

  1. javascript
  2. YouDon'tKnowJS

연산자 우선순위

자바스크립트에서 &&, || 연산자는 단순히 true/false를 반환하는게 아니라, 독특하게도 피연산자 중 하나를 선택하여 반환한다.

연산자가 2개, 피연산자가 3개면??

var a = 42;
var b = "foo";
var c = [1, 2, 3];

a && b || c; // "foo"
a || b && c; // 42

단락 평가

function doSomething(opts) {
    if (opts && opts.cool) {
        // ...
    }
}

opts && otps.cool에서 opts는 일종의 가드다. 만약 opts가 존재하지 않거나 객체가 아니라면 당연히 otps.cool은 에러일 수 밖에 없다. 하지만 opts를 먼저 단락 평가해보고 그 결과가 실패면 opts.cool은 자동으로 건너뛰니 결과적으로 에러는 나지 않는다.

function doSomething(opts) {
    if (opts.cache || primeCache()) {
        // ...
    }
}

opts.cache를 먼저 체크해서 OK면 굳이 primeCache() 함수는 호출하지 않고 넘어갈 수 있다. 그래서 불필요한 작업이 줄어든다.

Previous숫자Next스코프

Last updated 4 years ago

Was this helpful?