모던 자바스크립트 (4)

kirin.log·2021년 3월 1일
1
post-custom-banner

📚 배열

🐟 배열 리터럴로 생성하기

  • 변수배열(=쉼표로 구분한 값을 대괄호로 묶은 요소의 나열)값을 담아주는 방식
    ❗ 배열은 객체 타입 이므로, 배열을 변수에 대입하면 배열의 참조가 변수에 저장된다
// 배열 리터럴로 생성 예시
let evens = [2, 4, 6, 8, 10]

let a = [2, , 4];
// console.log(a)   ➡   [2, undefined, 4]

let various = [ 1, "one", true, {one: "1"}, [1, 1, 1] ];
// 모든 타입의 값이 올 수 있다

🚫 length 프로퍼티

  • 배열 요소의 갯수를 뜻한다
  • 배열 요소의 최대 인덱스값 +1이 포함되어 있다.
    즉, 0부터 시작하기 때문에 가장 마지막 index는 배열.length-1이 된다.
let arr = [ 'a', 'b', 'c', 'd', 'e' ]

arr.length = 2
// length 프로퍼티에 값을 할당함으로써 배열의 길이 조절 가능

console.log(arr)[ 'a', 'b' ]


arr.length = 5
// length 프로퍼티에 배열 길이보다 큰 정수 값을 대입하면, 
// 배열에 새로운 요소가 추가되지 않고 length 프로퍼티 앖만 바뀐다

console.log(arr)[ 'a', 'b', 'c', 'd', 'e', empty ]

🐟 Array 생성자로 생성하기

  • new Array로 새로운 배열 생성하는 방식
// new 생성자로 생성 예시
let evens = new Array(2, 4, 6, 8);

evens[0]    // 2
evens["2"]  // 6

🐠 Array 생성자의 인수가 한 개고, 그 값이 양의 정수이면, 인수로 주어진 길이만큼 배열을 생성
이때 인수는 배열의 길이를 뜻하므로, 배열이 인수의 값만큼 길이가 생성된다

let a = new Array(3)

console.log(a.length)  // 3

🐠 배열 요소의 추가

let evens = new Array(2, 4, 6, 8);

evens[4] = 10;

console.log(evens)[2, 4, 6, 8, 10]

🐠 배열 끝에 요소 추가

let evens = new Array(2, 4, 6, 8);

evens.push(12)

console.log(evens)[2, 4, 6, 8, 12]

🐠 배열 요소의 삭제

let evens = new Array(2, 4, 6, 8);

delete.evens[1]

console.log(evens)[2, undefined, 6, 8]

🐠 희소 배열
배열에 요소를 추가하거나 제거하면 인덱스가 0부터 시작되지 않는 배열이 만들어지며, 이러한 배열을 희소 배열이라고 부른다.

  • 희소배열의 길이(length)는 배열 요소의 개수보다 크다
  • undefined라고 표시되는 요소는 실제 없는 요소이다
let str = ["A", "B", "C"];

str[4] = "E";

console.log(str)["A", "B", "C", undefined, "E"]
console.log(str.length)5

// 일반 배열의 length가 4이지만, 희소배열의 length는 5

📚 연산자

🐇 표현식과 연산자
🪐 표현식 : 어떤 값으로 평가(evaluation)되는 것.

  • "표현식으로 평가한다" 라는 말은, 표현식의 값과 변수, 함수 등의 값을 바탕으로 식의 값을 계산하는 행위를 뜻한다
  • 가장 간단한 표현식은 숫자, 문자열, 논리값 등의 원시값(Primitive evalues)이다.
3.14, "hello", true, false, null
  • 변수, 프로퍼티, 배열요소, 함수 호출, 메서드 호출도 표현식이다.
sum, circle.radius, a[3], squre(5), card,getSum()

🪐 연산자 (=operator)를 사용하면 표현식을 조합하여 더욱 복잡한 표현식을 만들어 낼 수 있다.

a + b
// + 부분이 연산자

🐇 산술 연산자

  • 연산자가 숫자인 연산자. 피연산자가 숫자가 아닐 때는 연산자가 피연산자 타입을 숫자 타입으로 바꾸어 연산한다.
  • 연산 결과로는 숫자 값이 나오지만, 피연산자가 숫자로 바꿀 수 없는 값이거나 계산할 수 없을 때는 NaN이 나온다.

🪐 산술 이항 연산자

❗ 산술 이항 연산자를 쓸 때 몇 가지 주의사항
1) + 연산자는 피연산자 중 하나가 문자열이면, 나머지 피연산자를 문자열로 만든다.

1 + "2month"  
// 연산 결과: "12month" 
// 숫자 1을 문자열 "1"로 타입을 바꾸고 2month와 연결한다.
// 피연산자 중 하나가 숫자고 다른 하나가 문자열이면 문자열로 타입을 바꾸고 문자열과 연결

2) 계산할 수 없는 경우

  • 계산할 수 없는 경우에는 NaN으로 평가
  • 피연산자가 true1, falsenull이면 0으로 평가
  • undefinedNaN으로 평가
0/0            // -> NaN : 계산할 수 없음
"one" * 1      // -> NaN : 계산할 수 없음
true + true    // -> 2 : 논리값의 타입을 숫자로 바꾸어 더함
1 + null       // -> 1 : null을 0으로 바꾸어 더함
1 + undefined  // -> NaN : undefined를 NaN으로 바꾸어 더함

🪐 산술 단항 연산자

  • 증가 연산자는 피연산자 값에 1을 더하고, 감소 연산자는 피연산자 값에서 1을 뺀다.
  • 피연산자는 좌변에 있어야 한다.

    ❗ 증가 연산자와 감소 연산자는 피연산자 앞에 표기하는 전위 표기법과 뒤에 표기하는 후위 표기법을 사용할 수 있다.

    전위 표기법을 사용하느냐 후위 표기법을 사용하느냐에 따라 피연산자를 평가하는 시점이 달라진다.

    전위 표기법을 사용하면, 피연산자 값을 바꾼 다음에 피연산자를 평가한다.
    후위 표기법을 사용하면 피연산자 값을 평가한 다음에 피연산자 값을 바꾼다

    a =  1;
    b = ++a  
    // b는 2가 되고 a는 2가 된다(a에 1을 더하고 a를 b에 대입한다.)
    c = a++ + 2;  
    // c는 4가 되고 a는 3이 된다. (a + 2를 c에 대입하고 a에 1을 더한다.)

🪐 산술 대입 연산자

sum += data;
// 위 코드는 아래와 같은 뜻이다

sum = sum + data;
profile
boma91@gmail.com
post-custom-banner

0개의 댓글