본문 바로가기

카테고리 없음

자바스크립트 이것저것

 

당연히 알아야 하는 중요한 부분이지만, 순간 어?

뭐였더라 했던 문법들 필기하여 복습하는 순간을 가져보자

 

 

복합할당연산자

산술연산을 함과 동시에 결과값을 재할당한다.

let x = 10;
x += 5; // x = x + 5; 와 동일하다.
console.log(x); //15

 

순서를 바꿔쓰면 딱히 아무런 기능이 없다.

let x = 10;
x =+ 5; // 그냥 x = 5;
console.log(x); // 5

 

당연히 덧셈 연산자는 문자열도 누적 가능하다.

덧셈을 제외한 연산자 등호는 NaN을 반환한다

let str1 = "안녕";
let str2 = "하세요";
console.log(str1 += str2); // 안녕하세요

let str3 = "Hello";
let str4 = "lo";
console.log(str3 -= str4); // NaN

  

 

 

논리연산자 조건부실행

and 조건부 실행

let x = 0;

x > 0 && console.log('x 는 0');

and 왼쪽 조건이 truthy 값일 경우에만 실행되는 한줄짜리 코드 전용 if문.

 

or 조건부 실행

let y = 0; // 0은 false
let z = y || 20;

console.log(z); / 20

or 왼쪽 조건이 falsy 값일 경우에만 실행

 

 

 

record, outer

var a = 1; // 전역 변수 a

var outer = function() {
    var inner = function() {
        console.log(a); // 첫 번째 console.log
        var a = 3; // inner 함수의 지역 변수 a
    };
    inner(); // inner 함수 호출
    console.log(a); // 두 번째 console.log
};

outer(); // outer 함수 호출
console.log(a); // 세 번째 console.log

 

inner 함수의 console.log 에는 undefined 가 찍한다.

inner 함수 내에서 var a = 3; 선언이 존재하므로, a inner 함수의 지역 변수로 존재하게 된다.

 

변수 호이스팅에 따라, var a inner 함수의 최상단으로 끌어올려진다.

하지만 초기화는 console.log(a)가 실행된 이후에 이루어지므로, 그 시점에서 a는 아직 undefined 상태이다.

따라서 console.log(a) undefined를 출력한다.

 

  • record
    record는 특정 시점의 변수 상태를 나타내는 개념으로 이해할 수 있다.
    각 스코프의 상태를 기록하는 것으로, 전역 스코프는 { a: 1 }, outer의 스코프는 { a: 1 }, inner의 스코프는 { a: undefined }가 된다.

  • outer
    outer는 함수가 다른 함수를 포함하는 구조를 의미한다.
    예시에서 outer 함수는 inner 함수를 포함하고 있으며, inner는 자신의 스코프에서 전역 및 outer의 변수를 참조할 수 있다.
    이로 인해 inner의 console.log(a);는 undefined, outer의 두 번째 console.log(a);는 1이 출력된다.