본문 바로가기
프로그래밍언어/JavaScript

[Javascript] 자바스크립티 기본 (4)

by Yikanghee 2022. 4. 1.
  • 함수표현식
    • 함수선언식과 표현식
    • let hello = function() { console.log("안녕하세요"); } console.log(hello); -> 안녕하세요 -> 함수 선언식 const helloText = hello(); console.log(helloText); -> 안녕하세요 -> 함수 표현식
    • 차이
    console.log(helloB);
    -> 안녕하세요
    -> **호이스팅** (hoisting)으로 함수선언식으로 만들어진 코드는 최상단으로 올라감
    console.log(helloA);
    //출력 x
    
    let helloA = function() {
    	return "안녕하세요";
    }
    
    function helloB() {
    	return "안녕하세요";
    }
    
    • 화살표함수
    let helloA = () => "안녕하세요"
    
    console.log(helloA());
    //이것 또한 함수표현식으로 호이스팅 지원이 안됨
    
  • 콜백함수
  • function chechMood (mood, goodCallback, badCallback) { if (mood === "good") { // 기분이 좋을 때 동작 goodCallback(); } else { // 기분이 안 좋을 때 동장 badCallback(); } } function cry() { console.log("ACTION :: CRY"); } function sing() { console.log("ACION :: SING"); } function dancd() { console.log("ACION :: DANCD"); } //함수선언식에 있는 매개변수를 함수에 전달 checkMood("sad", sing, cry); //전달된 매개변수를 콜백해줌
  • 객체
    • 객체 생성자를 사용한 생성
    let person = new Object();
    
    • 중괄호를 사용한 생성 (리터럴 방식)
    let person = {};
    
    • 객체를 넣는법
    let persion ={
    		key1 : "value2", //프로퍼티 (객체 프로퍼티)
    		key2 : 123,
    		key3 : [1,2],
    		key4 : function () {},
    		key5 : undefined
    }; //객체 리터럴 방식
    //key와 value를 사용하여 객체를 만든다
    
    console.log(person.key1);
    // .을통해 접근하는 것을 .표기법이라고 부르고
    // 객체이름.프로퍼티이름
    console.log(person["key1"];
    // 대괄호를 사용한 괄호표기법
    // 이때 반드시 "" 를 사용해야함
    
    • 활용
    let person = {
    	name: "Tom",
    	age: 25
    }
    
    console.log(getPropertyValue("name")
    // Tom 출력
    
    function getPropertyValue(key) {
    	return person[key];
    }
    
    • 내용추가
    let person = {
    	name: "Tom",
    	age: 25
    }
    
    person.location = "한국";
    person["gender"] = "남성";
    person.name = "Jane";
    
    console,log(person);
    -> name : "Jane", age : 25, location: "한국", gender: "남성"
    //프로퍼티를 바꾸는 행위로 오류 발생 x
    
    //만약 다음과 같이 값을 수정하면 상수 자체를 수정하는 것으로 오류가 생김
    person = {
    	age = 45;
    }
    
    //만약 프로퍼티를 삭제하고 싶은경우
    delete.person("name");
    -> name 값을 지움, 그러나 메모리 형태는 남아있음
    person.name = null;
    -> 메모리 구조도 완전히 삭제
    
    • 프로퍼티에 함수 사용법
    const person = {
    	name : "Tom",
    	age : 25,
    	say : function() {
    		console.log("안녕");
    }
    };
    
    person.say();
    person["say"]();
    -> 안녕
    
    ----------------------------------------
    //동적인 활용
    
    const person = {
    	name : "Tom",
    	age : 25,
    	say : function() {
    		console.log(`안녕 나는 ${this["name"]}`);
    }
    };
    
    person.say();
    person["say"]();
    -> 안녕 나는 Tom
    
    //객체에대한 프로퍼티 보유 여부를 알 수 있음
    console.log(`name : ${"name" in persion}`);
    -> true
    console.log(`gender : ${"gender" in persion}`);
    -> false
    

댓글