Note/JavaScript43 블록 레벨 스코프 var의 문제점 변수 중복 선언 허용 : 실수로 이전에 선언한 줄 모르고 사용하여 휴먼 에러 확률이 증가. 함수만으로 구분되는 스코프 레벨 : 블록 단위로 스코프 레벨이 구분되지 않고 오로지 함수로만 구분됨. 변수 호이스팅으로 인하여 할당문 이전에는 undefined 반환 : 에러를 반환하진 않지만, 코드 흐름상 맞지 않다. let 키워드 § 특징 변수 중복 선언 금지 블록 레벨 스코프 : 모든 코드 블록을 지역 스코프로 인정한다. (함수, if문, for문, while문 등) 변수 호이스팅 방지 : var는 변수 선언과 초기화를 동시에 진행하지만 let은 선언과 초기화가 따로 진행되어 let선언문 이전에 호출하게 되면 undefined가 아닌 참조 에러가 발생한다. const 키워드 § 특징 선언과 동.. 2024. 2. 1. 전역 변수의 문제점 변수의 생명주기 : 변수 호이스팅에 의해 런타임 이전에 변수가 선언되는 것은 전역 변수에 한해서이다. 함수 내에 선언되는 변수는 런타임 이전은 아니지만 함수가 호출될 때 가장 먼저 선언이 된다. 그리고 함수 실행이 끝나면 지역 변수의 생명 주기도 끝이 난다. 전역 변수 : 런타임 이전 변수 선언. 애플리케이션 생명주기 = 전역 변수 생명주기 지역 변수 : 함수 호출 시 변수 먼저 선언. 함수 생명주기 = 지역 변수 생명주기 단, 지역 변수일지라도 어딘가에서 지역 변수를 참조하고 있다면 생명 주기가 더 길어진다. 예시) var a = 'abc'; function func1() { console.log(a); var a = 'def'; } func1(); // undefined console.log(a); .. 2024. 1. 31. 스코프 스코프 : 모든 식별자들은 각자의 사용될 범위가 정해져있다. 이는 곧 해당 식별자가 유효한 위치 혹은 범위. 이것을 스코프라고 한다. 예시) var a = 'front'; function p_func() { var a = 'back'; console.log(x); } p_func(); // back console.log(x); // front 같은 스코프 내에서의 선언 var : 같은 스코프 내에 중복 선언이 허용된다. 자바스크립트 내에서 중복 선언이라면 var를 무시하고 값을 할당하도록 동작하고 오류는 발생하지 않는다. let , const : 같은 스코프 내에서 중복 선언을 허용하지 않는다. 스코프의 종류 전역 : 코드의 가장 바깥 쪽. 지역 : 특정 코드 내부(함수). : 지역 내에서 선언된 함수와.. 2024. 1. 31. 함수 함수 : 값을 입력받고 출력하는 과정. 함수는 코드의 재사용 하는 부분에서 매우 효율적이다. 함수의 요소 매개변수(parameter) : 입력을 전달받는 변수 인수(argument) : 입력되는 값 반환값(return value) : 출력되는 값 함수 리터럴 함수 리터럴 구성요소 함수 이름 : 이름을 쓸 수도 있고, 안 쓸 수도 있다. 매개변수 목록 함수 몸체 : 함수를 사용할 때 실행되는 코드들이 블록으로 감싸져 있는 코드 덩어리 함수 정의 함수 선언문 : function 함수이름(변수1, 변수2, ..) 형식을 통해 선언 function add(x, y) { return x + y; } 함수 표현식 : 변수에 함수를 할당하는 방식으로 선언 var num = function (x, y) { return.. 2024. 1. 25. 원시 값과 객체 비교 원시 값 이름 변경여부 변수 할당 형태 원시 값 변경 불가능 실제 값 객체 값 변경 가능 참조 값 변경 불가능한 값 : 원시값은 읽기전용 값이며, 변경할 수 없다. 그로 인해 데이터의 신뢰성이 보장된다. 원시값 재할당 시, 새로운 메모리 공간을 확보함으로써 메모리 주소가 바뀌고 재할당한 원시 값을 저장한다. 문자열과 불변성 문자열 변수를 선언하고 값을 할당한 뒤에 값을 다른 문자열로 재할당하면 메모리상에는 재할당한 값과 이전 값이 모두 존재한다. 고로 문자열은 메모리 상에서 변경이 되지 않고 새로 만들어져서 재할당되기 때문에 문자열이 변경되지 않는다. 다만, 문자열이 변경되지 않는 다는 것이 재할당이 불가능하다는 의미가 아니다. var str = 'abcde'; // O str[0] = 'A'; // X.. 2024. 1. 24. 객체 리터럴 객체 : 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 원시값 : 변경 불가능한 값 ↔ 객체 : 변경 가능한 값 프로퍼티 : 객체의 상태를 나타내는 값 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작 예시) var person = { name: 'Jang', age: 28, increase: function() { this.age++; } }; 프로퍼티 - name: 'Jang' ,age: 28 프로퍼티 키 - name , age 프로퍼티 값 - 'Jang' , 28 메서드 - increase: function() { this.age++; } JS에서 지원하는 객체 생성 방법 객체 리터럴.. 2024. 1. 24. 이전 1 ··· 3 4 5 6 7 8 다음 반응형