ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23_11_16 JS공부정리
    개발공부/JavaScript 2023. 11. 16. 22:59

    [코딩애플] Part 2

     

     

    -rest 파라미터

    function 함수2(...rest) { //rest 파라미터. 입력되는 파라미터들을 배열로 만들겠다는 의미
        console.log(rest);
    }

    함수2(1,2,3,4,5); //[1, 2, 3, 4, 5]

     

    -argument와 차이점

    arguments : 모든 파라미터를 배열에 담아줌
    rest parameter : 그 자리에 오는 모든 파라미터를 배열에 담아줌

    function 함수2(a,b,...rest) {
        console.log(rest);
    }

    함수2(1,2,3,4,5); //[3, 4, 5]

     

    1.함수 파라미터 자리에 붙으면 rest 파라미터
    2.나머지 경우에는 spread operator

     

    rest 파라미터 주의점
    1.가장 뒤에 ...rest 를 써야함. 그 뒤에 다른 파라미터 못받음
    2.두번 이상 못씀

     

    -default에 관한 문제

    function 함수(a = 5, b = a * 2 ){
      console.log(a + b);
    }
    함수(undefined, undefined); //15. 파라미터에 값을 할당하지 않는것 = undefined이므로 default값들이 실행됨

     

    -데이터마이닝에 관한 문제

    글자세기('aacbbb') 라고 입력하면 콘솔창에

    { a : 2, b : 3, c : 1 }

    ▲ 이렇게 출력해주는 글자세기() 라는 함수 만들기

    function 글자세기(a) {
        let result = {};
        [...a].forEach(e => {
            if(result[e]>0) {
                result[e]++
            } else {
                result[e] = 1
            }
        })
        console.log(result);
    }

    글자세기('aacbbb')

     

    1.primitive data type : 변수에 값이 그대로 저장됨
    -그냥 문자와 숫자는 Primitive data type

     

    2.Reference data type : 데이터가 저기 있습니다~ 하는 화살표(참조)가 저장됨
    -Array,Object는 변수에 값이 저장되는것이 아니라 reference가 저장됨

    var 어레이 = [1,2,3

    *[1,2,3]이 어레이에 저장되는것이 아니라, [1,2,3]이 저기있어요~하는 화살표가 저장됨

     

    -reference data type의 비교

    var 이름1 = { name : '김' };
    var 이름2 = { name : '김' };

    console.log(이름1 == 이름2) //false. 각각의 변수에는 객체가 아니라 객체로 향하는 화살표가 저장되어있기 때문

     

     

    -function안에서의 reference data 재할당

    var 이름1 = { name : '김' };
    function 변경(obj){
      obj = { name : 'park' };
    }

    변경(이름1); // {name : '김'}
    변경(var obj = 이름1); //파라미터의 작동방식. 파라미터를 넣는다는건 새로운 변수를 선언하는것과 같음

    이름1을 변경()함수에 넣는 순간 파라미터(obj)에 화살표를 복사한것과 같음

     

    하지만 obj에 새로운 객체를 넣으면 새로운 화살표를 재할당한것과 같으므로 기존 화살표가 없어짐.

    -따라서 이름1은 그대로 {name : '김'}으로 남아있음.

    이름1.name을 변경하고 싶으면 함수안에서 obj.name = "park" 으로 해야함.

     

    -constructor(생성자 함수)문법

    var student1 = { name : "kim", age : 15};
    function Student() { //constructor(대문자로 시작)
        this.name = 'kim' //this는 새로 생성되는 object를 뜻함(인스턴스, instance)
        this.age = 15
    }

    let 학생1 = new Student(); //새로운 object를 생성후 변수에 할당

    학생1과 학생2는 참조관계가 아님. 새로운 객체를 만들어서 할당한것.(새로운 화살표 대입)

    .

    function Student() { //constructor(대문자로 시작)
        this.name = 'kim' 
        this.age = 15
        this.sayHi = function() {
            console.log("안녕하세요 "+this.name+"입니다."); //this.함수 방식으로 메서드도 입력가능
        }
    }

    let 학생1 = new Student();
    학생1.sayHi();

     

    function Student(a) { //파라미터를 입력하여 객체를 가변적으로 생성가능
        this.name = a
        this.age = 15
        this.sayHi = function() {
            console.log("안녕하세요 "+this.name+"입니다.");
        }
    }

    let 학생1 = new Student('ho'); //파라미터 입력으로 가변적 객체 생성
    let 학생2 = new Student('hi')
    console.log(학생1) // {name: 'ho', age: 15}
    console.log(학생2) // {name: 'hi', age: 15}  

     

    '개발공부 > JavaScript' 카테고리의 다른 글

    23_11_19 JS공부정리  (0) 2023.11.19
    23_11_18 JS공부정리  (0) 2023.11.19
    23_11_15 JS공부정리  (0) 2023.11.15
    23_11_13 JS공부정리  (1) 2023.11.14
    23_11_11 JS공부정리  (0) 2023.11.12
Designed by Tistory.