개발공부/자바스크립트

[🦄자바스크립트 완벽가이드] 표현식과 연산자

햄❤️ 2022. 7. 19. 15:52
반응형

4.1 기본 표현식

  • 상수, 리터럴 값, 일부 키워드, 변수 참조

4.2 객체와 배열 초기화 표현식

  • 그 값이 새로 생성된 객체나 배열인 표현식. 객체 리터럴 혹은 배열 리터럴이라고 부른다

4.3 함수 정의 표현식

  • 함수 리터럴

4.4 프로퍼티 접근 표현식

  • 점 표기법, 대괄호 표기법
  • 점 표기법은 접근하고자 하는 이름이 유효한 식별자이고, 그 이름을 알고 있을때만 사용
  • 프로퍼티 이름에 스페이스나 구두점, 숫자인 경우, 변수일 때에는 대괄호 표기법을 써야한다.
expression.identifier
expression[expression]
  • 조건부 프로퍼티 접근(옵셔널 체이닝) → undefined, null 일때 종료(undefined로 평가) ⇒ TypeError 방지

4.5 호출 표현식

  • 함수나 메서드를 호출하는 문법
f(0) // f는 함수 표현식이고 8은 인자 표현식입니다. 
Math.max(x,y,z) // Math.max는 함수이고 x, y, z는 인자입니다. 
a.sort() // a.sort는 함수이고 인자는 없습니다.
  • 옵셔널 체이닝을 통해 조건부 호출 가능

4.6 객체 생성 표현식

  • 객체 생성 표현식은 객체를 생성하고 함수(생성자)를 호출해 객체 프로퍼티를 초기화
  • new 키워드가 붙음

4-7. 연산자 개요

  • 1항 연산자, 2항 연산자, 3항 연산자 (피연산자 개수를 기준으로 분류)
  • 부수효과: 할당 연산자 혹은 ++, - - 연산자 경우 표현식 이후 평가 결과에 영향을 미침
  • 우선순위: 동작 순서 결정, 우선순위가 높은 순서로 수정되며 () 괄호를 이용해 순서를 변경할 수 있음
  • 결합성(R, L): 우선 순위가 같은 동작을 수행할때의 순서(L: 왼쪽에서 오른쪽, R:오른쪽에서 왼쪽)

4-8 산술 표현식

  • “+” 는 숫자 피연산자는 더하고, 문자열 피연산자는 병합, 연산자의 타입이 일치하지 않으면 문자열 병합이 우선
  • “++”가 피연산자 앞에 있을때는 전위 증가 연산자, 뒤에 있을때에는 후위 증가 연산자
  • 전위 연산자는 1 더해진 값으로 평가, 후위 연산자는 1 더하기 전의 값으로 평가
1 + 2 // => 3: 덧셈
"1" + "2" // => "12": 병합
"1" + 2 // => "12": 숫자를 문자열로 변환한 후 병합
1 + {} // => "l[object Objectl": 객체를 문자열로 변환한 후 병합
true + true  // => 2: 불 값을 숫자로 변환한 후 덧셈
2 + null // => 2: null을 0으로 변환한 후 덧셈
2 + undefined // => NaN: undefined를 NaN으로 번환한 후 덧셈

let i = 1, ++i; // i와 j는 모두 2입니다. 
let n 1, m= n++; // n은 2이고 m은 1입니다.

4-9 관계 표현식

  • “===” 일치 연산자, 타입까지 완전히 같은지 반환 (↔ ”!== “)
  • “==” 동등 연산자, 타입 변환을 허용하여 두 피연산자가 같다고 볼 수 있는지 체크 (↔ ”! = “)

🙊 왜 “11” < “3” true?

(아스키 코드로 비교한다. 맨 앞글자 “1” 과 “3” 을 비교했을때 3의 아스키코드가 커서!)

4-10 논리 표현식

  • &&, ||, !

4-11 할당 표현식

  • 할당 연산자 “=”의 우선순위는 낮다.
  • 할당과 연산을 동시 지원 (단축 표현), “+=” , “-=”

4.12 평가 표현식

  • eval(): 보안으로 사용을 매우 권장하지 않다.
  • 문자열이 아닌 값을 전달하면, 그 값을 반환. 문자열을 전달하면 자바스크립트 코드로 분석 시도 실패하면 syntaxError, 문자열 성공적으로 분석 시 코드를 평가하고 문자열의 마지막 표현식 또는 문의 값을 반환하고 마지막 표현식이나 문에 값이 없다면 undefined를 반환한다.
  • eval()을 호출했을 때의 핵심은 eval()이 자신을 호출한 코드의 변 수 환경을 사용한다는 점

4.13 기타 연산자

  • 조건 연산자 (3항 연산자)
  • null 병합 연산자 (??) : 왼쪽 피 연산자가 nuH이나 undefined가 아니면 그 값을 반환
  • || 를 쓸때는 0을 조심해서 써야함. 0은 false 처리라 무시됨. 이럴때는 ??를 써야한다.
  • void: 단항 연산자이며 피 연산자 타입을 가리지 않음. 피연산자를 평가한 후 그 값을 버 리고 undefined를 반환

4.1 기본 표현식

  • 상수, 리터럴 값, 일부 키워드, 변수 참조

4.2 객체와 배열 초기화 표현식

  • 그 값이 새로 생성된 객체나 배열인 표현식. 객체 리터럴 혹은 배열 리터럴이라고 부른다

4.3 함수 정의 표현식

  • 함수 리터럴

4.4 프로퍼티 접근 표현식

  • 점 표기법, 대괄호 표기법
  • 점 표기법은 접근하고자 하는 이름이 유효한 식별자이고, 그 이름을 알고 있을때만 사용
  • 프로퍼티 이름에 스페이스나 구두점, 숫자인 경우, 변수일 때에는 대괄호 표기법을 써야한다.
expression.identifier
expression[expression]
  • 조건부 프로퍼티 접근(옵셔널 체이닝) → undefined, null 일때 종료(undefined로 평가) ⇒ TypeError 방지

4.5 호출 표현식

  • 함수나 메서드를 호출하는 문법
f(0) // f는 함수 표현식이고 8은 인자 표현식입니다. 
Math.max(x,y,z) // Math.max는 함수이고 x, y, z는 인자입니다. 
a.sort() // a.sort는 함수이고 인자는 없습니다.
  • 옵셔널 체이닝을 통해 조건부 호출 가능

4.6 객체 생성 표현식

  • 객체 생성 표현식은 객체를 생성하고 함수(생성자)를 호출해 객체 프로퍼티를 초기화
  • new 키워드가 붙음

4-7. 연산자 개요

  • 1항 연산자, 2항 연산자, 3항 연산자 (피연산자 개수를 기준으로 분류)
  • 부수효과: 할당 연산자 혹은 ++, - - 연산자 경우 표현식 이후 평가 결과에 영향을 미침
  • 우선순위: 동작 순서 결정, 우선순위가 높은 순서로 수정되며 () 괄호를 이용해 순서를 변경할 수 있음
  • 결합성(R, L): 우선 순위가 같은 동작을 수행할때의 순서(L: 왼쪽에서 오른쪽, R:오른쪽에서 왼쪽)

4-8 산술 표현식

  • “+” 는 숫자 피연산자는 더하고, 문자열 피연산자는 병합, 연산자의 타입이 일치하지 않으면 문자열 병합이 우선
  • “++”가 피연산자 앞에 있을때는 전위 증가 연산자, 뒤에 있을때에는 후위 증가 연산자
  • 전위 연산자는 1 더해진 값으로 평가, 후위 연산자는 1 더하기 전의 값으로 평가
1 + 2 // => 3: 덧셈
"1" + "2" // => "12": 병합
"1" + 2 // => "12": 숫자를 문자열로 변환한 후 병합
1 + {} // => "l[object Objectl": 객체를 문자열로 변환한 후 병합
true + true  // => 2: 불 값을 숫자로 변환한 후 덧셈
2 + null // => 2: null을 0으로 변환한 후 덧셈
2 + undefined // => NaN: undefined를 NaN으로 번환한 후 덧셈

let i = 1, ++i; // i와 j는 모두 2입니다. 
let n 1, m= n++; // n은 2이고 m은 1입니다.

4-9 관계 표현식

  • “===” 일치 연산자, 타입까지 완전히 같은지 반환 (↔ ”!== “)
  • “==” 동등 연산자, 타입 변환을 허용하여 두 피연산자가 같다고 볼 수 있는지 체크 (↔ ”! = “)

🙊 왜 “11” < “3” true?

(아스키 코드로 비교한다. 맨 앞글자 “1” 과 “3” 을 비교했을때 3의 아스키코드가 커서!)

4-10 논리 표현식

  • &&, ||, !

4-11 할당 표현식

  • 할당 연산자 “=”의 우선순위는 낮다.
  • 할당과 연산을 동시 지원 (단축 표현), “+=” , “-=”

4.12 평가 표현식

  • eval(): 보안으로 사용을 매우 권장하지 않다.
  • 문자열이 아닌 값을 전달하면, 그 값을 반환. 문자열을 전달하면 자바스크립트 코드로 분석 시도 실패하면 syntaxError, 문자열 성공적으로 분석 시 코드를 평가하고 문자열의 마지막 표현식 또는 문의 값을 반환하고 마지막 표현식이나 문에 값이 없다면 undefined를 반환한다.
  • eval()을 호출했을 때의 핵심은 eval()이 자신을 호출한 코드의 변 수 환경을 사용한다는 점

4.13 기타 연산자

  • 조건 연산자 (3항 연산자)
  • null 병합 연산자 (??) : 왼쪽 피 연산자가 nuH이나 undefined가 아니면 그 값을 반환
  • || 를 쓸때는 0을 조심해서 써야함. 0은 false 처리라 무시됨. 이럴때는 ??를 써야한다.
  • void: 단항 연산자이며 피 연산자 타입을 가리지 않음. 피연산자를 평가한 후 그 값을 버 리고 undefined를 반환

4.1 기본 표현식

  • 상수, 리터럴 값, 일부 키워드, 변수 참조

4.2 객체와 배열 초기화 표현식

  • 그 값이 새로 생성된 객체나 배열인 표현식. 객체 리터럴 혹은 배열 리터럴이라고 부른다

4.3 함수 정의 표현식

  • 함수 리터럴

4.4 프로퍼티 접근 표현식

  • 점 표기법, 대괄호 표기법
  • 점 표기법은 접근하고자 하는 이름이 유효한 식별자이고, 그 이름을 알고 있을때만 사용
  • 프로퍼티 이름에 스페이스나 구두점, 숫자인 경우, 변수일 때에는 대괄호 표기법을 써야한다.
expression.identifier
expression[expression]
  • 조건부 프로퍼티 접근(옵셔널 체이닝) → undefined, null 일때 종료(undefined로 평가) ⇒ TypeError 방지

4.5 호출 표현식

  • 함수나 메서드를 호출하는 문법
f(0) // f는 함수 표현식이고 8은 인자 표현식입니다. 
Math.max(x,y,z) // Math.max는 함수이고 x, y, z는 인자입니다. 
a.sort() // a.sort는 함수이고 인자는 없습니다.
  • 옵셔널 체이닝을 통해 조건부 호출 가능

4.6 객체 생성 표현식

  • 객체 생성 표현식은 객체를 생성하고 함수(생성자)를 호출해 객체 프로퍼티를 초기화
  • new 키워드가 붙음

4-7. 연산자 개요

  • 1항 연산자, 2항 연산자, 3항 연산자 (피연산자 개수를 기준으로 분류)
  • 부수효과: 할당 연산자 혹은 ++, - - 연산자 경우 표현식 이후 평가 결과에 영향을 미침
  • 우선순위: 동작 순서 결정, 우선순위가 높은 순서로 수정되며 () 괄호를 이용해 순서를 변경할 수 있음
  • 결합성(R, L): 우선 순위가 같은 동작을 수행할때의 순서(L: 왼쪽에서 오른쪽, R:오른쪽에서 왼쪽)

4-8 산술 표현식

  • “+” 는 숫자 피연산자는 더하고, 문자열 피연산자는 병합, 연산자의 타입이 일치하지 않으면 문자열 병합이 우선
  • “++”가 피연산자 앞에 있을때는 전위 증가 연산자, 뒤에 있을때에는 후위 증가 연산자
  • 전위 연산자는 1 더해진 값으로 평가, 후위 연산자는 1 더하기 전의 값으로 평가
1 + 2 // => 3: 덧셈
"1" + "2" // => "12": 병합
"1" + 2 // => "12": 숫자를 문자열로 변환한 후 병합
1 + {} // => "l[object Objectl": 객체를 문자열로 변환한 후 병합
true + true  // => 2: 불 값을 숫자로 변환한 후 덧셈
2 + null // => 2: null을 0으로 변환한 후 덧셈
2 + undefined // => NaN: undefined를 NaN으로 번환한 후 덧셈

let i = 1, ++i; // i와 j는 모두 2입니다. 
let n 1, m= n++; // n은 2이고 m은 1입니다.

4-9 관계 표현식

  • “===” 일치 연산자, 타입까지 완전히 같은지 반환 (↔ ”!== “)
  • “==” 동등 연산자, 타입 변환을 허용하여 두 피연산자가 같다고 볼 수 있는지 체크 (↔ ”! = “)

🙊 왜 “11” < “3” true?

(아스키 코드로 비교한다. 맨 앞글자 “1” 과 “3” 을 비교했을때 3의 아스키코드가 커서!)

4-10 논리 표현식

  • &&, ||, !

4-11 할당 표현식

  • 할당 연산자 “=”의 우선순위는 낮다.
  • 할당과 연산을 동시 지원 (단축 표현), “+=” , “-=”

4.12 평가 표현식

  • eval(): 보안으로 사용을 매우 권장하지 않다.
  • 문자열이 아닌 값을 전달하면, 그 값을 반환. 문자열을 전달하면 자바스크립트 코드로 분석 시도 실패하면 syntaxError, 문자열 성공적으로 분석 시 코드를 평가하고 문자열의 마지막 표현식 또는 문의 값을 반환하고 마지막 표현식이나 문에 값이 없다면 undefined를 반환한다.
  • eval()을 호출했을 때의 핵심은 eval()이 자신을 호출한 코드의 변 수 환경을 사용한다는 점

4.13 기타 연산자

  • 조건 연산자 (3항 연산자)
  • null 병합 연산자 (??) : 왼쪽 피 연산자가 nuH이나 undefined가 아니면 그 값을 반환
  • || 를 쓸때는 0을 조심해서 써야함. 0은 false 처리라 무시됨. 이럴때는 ??를 써야한다.
  • void: 단항 연산자이며 피 연산자 타입을 가리지 않음. 피연산자를 평가한 후 그 값을 버 리고 undefined를 반환
728x90
반응형