javascript reference

2022. 10. 2. 22:02· Javascript/문법
목차
  1. 중요
  2. 참고

Reference 타입

  1. Date
    var date = new Date();
    console.log(date) 
  • 자바스크립트의 사용시간대와 우리나라 사용시간대는 다름에 주의

  • 날짜를 다루는 객체이기에 날짜 관련 내부 기능이 많이 있음

  • 문제는 자바스크립트에서 이 date를 사용하는 방법이 비효율적이다.

  • 따라서 자바스크립트에서 날짜 관련 기능을 만들 때에는 Date를 바로 쓰기 보다 moment 나 Luxon 을 사용하는 것이 좋다.

  • 자바스크립트 기본 Date는 문제가 많은 듯 하다. 여기서도 지적을 한다.

  1. Regexp(Regular Expression)
    var reg1 = /abc/; // 리터럴 표기법
    var reg2 = new RegExp("/abc/", "g"); // 객체방식
  • 리터럴 표기법의 장점은 다음과같이 if문에서 즉시 정규식을 통해서 필터링이 가능하다는 장점이 있다.
      if(/abc/.test('abc')) {
          console.log('passed');
      }
  1. Array
  • 자바스크립트는 배열을 만드는 법이 두 가지 있다.

      // 1. 생성자로 만들기
      var arr1 = new Array();
    
      // 2. 리터럴 배열
      var arr2 = [];
    
      arr2.push('a', 'b', 'c');
      console.log(arr2, arr2.length); // ['a', 'b', 'c'] 3
  • 자바스크립트는 배열의 크기가 유동적이기 때문에 데이터를 넣는만큼 늘어난다는 장점이 있다.

  • JS는 다이나믹언어이기 때문에 배열에 들어가는 요소의 타입도 상관 없다.

  • 또 배열 안에 리터럴 오브젝트를 넣을 수도 있다.

      var arr2 = [];
      arr2.push({
          a: 'a'
      })
  1. Function
  • 자바스크립트에서 function은 자료형으로 취급하기 때문에 단순 선언 이외에도 함수의 return값이나 매개변수를 넣어줄 수 있다.
// 1. literal function
function add(a, b) {
    return a + b
}

// 2.
var minus = function (a, b){
    return a - b;
}
  • 이 두 방식은 별 차이 없어보이나...

  • 호이스팅 부분에 있어서 큰 차이가 있음

  • 또, 자료형으로 취급하기 때문에 변수에 바로 넣어줄 수가 있다. 이때 함수는 minus라는 변수에 익명함수(또는 람다함수)로 들어가는 것임

  • 함수를 return하는 것도 가능함

      function createAdd(){
          return function(a, b) {
              return a + b;
          }
      }
    
      var add2 = createAdd();
      console.log(add2(1, 3)); // 4
    • 이러면 add2의 변수에 마지막 익명함수가 들어간다.
  • 함수를 함수의 parameter로 넣을 수도 있다.

      function createFunction(fn){
          return fn;
      }
    
      var add3 = createFunction(function(a, b) {
          return a + b
      })
    
      console.log(add3(10, 20)); // 30
  1. Object
  • 자바스크립트는 객체지향인 OOP 언어이다.

  • 그러나.. 일반적으로 공부한 class기반 언어와는 다르다.

      //Object
      var person1 = {
          name: 'modernator', 
          age: 26
      }
    
      // 생성자로 만들기 
      function Person(name, age){
          this.name = name;
          this.age = age;
      }
    
      var person2 = new Person('Entvy', 26);
  • 그런데.. Object도 데이터 타입으로 취급하기 때문에 함수의 인자나 return값으로 반환이 가능하다.

  • 이러한 객체 사용방식도 있다.

      function createPerson(name, age){
          return {
              name: name,
              age: age
          }
      }
    • 생성자로 만든 방식이 아녀도 같은 결과를 가져올 수 있다.
    • 생성자의 경우 new 키워드를 잊으면 원하는 결과가 나오지 않을 수도 있으나.. 이러한 방식은 new를 쓰든 안쓰든 똑같은 결과가 나온다.

중요

  • 이러한 객체들의 경우 Primitive타입과 달리 Reference타입으로 불린다.

  • 왜냐하면

      var obj1 = {
          a: 1
      }
    
      var obj2 = obj1;
      obj2.a = 3
    
      console.log(obj1.a); // 3
  • 다음과 같이 obj2가 obj1을 참조함을 알 수 있다.

  • 따라서 깊은 복사가 필요함

  • primitive 타입의 경우..
      var num1 = 10;
      var num2 = num1;
      num2 = 30;
      console.log(num1); // 10
    • num1의 값이 바뀌지 않는다.
    • primitive타입에서 대입을 하면 그 데이터의 값을 복제하게 된다. 따라서 num2의 값을 바꿔도 num1의 값에 영향을 미치지 않는다.

참고

https://www.youtube.com/playlist?list=PLHAZLmfOjvbINoq1J_4JjYlL24ubOLbR5

반응형
저작자표시 (새창열림)

'Javascript > 문법' 카테고리의 다른 글

내가 기억하기 위한 promise, async await  (0) 2022.10.09
javascript hoisting  (0) 2022.10.02
자바스크립트 신문법 정리(optional chaining, nullish coalescing 연산자)  (0) 2022.06.18
객체 비구조화 할당 (객체 구조 분해)  (0) 2020.10.08
자바스크립트 사용시 주의해야 할 기본적인 문법  (0) 2020.10.08
  1. 중요
  2. 참고
'Javascript/문법' 카테고리의 다른 글
  • 내가 기억하기 위한 promise, async await
  • javascript hoisting
  • 자바스크립트 신문법 정리(optional chaining, nullish coalescing 연산자)
  • 객체 비구조화 할당 (객체 구조 분해)
sovelop
sovelop
무슨 생각을 해.. 그냥 하는거지
sovelop
so's devlog
sovelop
전체
오늘
어제
  • 분류 전체보기 (141)
    • 🔥TIL (15)
    • 생각 (5)
      • Daily Routine (0)
    • WEB (2)
    • VueJS (1)
    • 파이썬 문법 (17)
      • Django (0)
    • 알고리즘 (23)
      • 백준 알고리즘 (13)
      • 프로그래머스 (0)
      • 기타 사이트 알고리즘 (6)
    • 컴퓨터공학입문 (13)
    • Data_Analysis (9)
    • Javascript (8)
      • 문법 (8)
      • node.js (0)
    • Java (9)
      • 문법 (3)
      • Android Studio (0)
      • Algorithm (2)
    • Server (6)
      • sql (2)
      • linux (2)
    • Back-up (22)
      • Git + Github (5)
      • English (0)
      • etc (17)
    • 테크 관련 세미나 (4)
    • English (0)
    • Error (4)
    • 코테후기 (0)

블로그 메뉴

  • About me

공지사항

인기 글

태그

  • 코알라univ
  • 혼공단
  • va87m
  • 혼공자
  • 한빛미디어
  • 코딩좀알려주라
  • 무접점저소음
  • # 백준 #파이썬 #python

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
sovelop
javascript reference
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.