Javascript

· Javascript
in 연산자 - JavaScript | MDN in 연산자 - JavaScript | MDN in 연산자는 명시된 속성이 명시된 객체에 존재하면 true를 반환합니다. developer.mozilla.org in 연산자를 사용하여 객체의 존재 유무를 판단할 때 가끔 의도치 않은 결과가 반환되는 경우가 있다. 그 이유는 in 연산자는 명시된 속성이 명시된 객체에 존재하면 true를 반환하기 때문이다. 즉, 객체가 undefined로 설정되어 있어도 그것을 true라고 반환하는 것이다. in 연산자에서 false를 반환하기 위해서는 처음부터 정의되지 않았거나 delete 연산자를 통해 제거된 속성이어야 한다. 이러한 문제 발생의 가능성을 제거하고자 다른 방법을 사용하여 객체의 포함 여부를 확인하였다. 포함 ..
자바스크립트가 제공하는 7가지 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다. 원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다.▪️ 원시 값은 변경 불가능한 값이다. 이에 비해 객체는 변경 가능한 값이다.▪️  원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.▪️  원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. (값에 의한 전달) 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. (참조에 의한 전달)  1) 원시 값변경 불가능한 값한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없다. 이러한 원시 값의 특성..
1) 객체란?자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 “모든 것”이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. 또한 원시 값은 변경 불가능한 값이지만 객체는 변경 가능한 값이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있으며, 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라..
· Javascript
결론은 NO. 동적 프로퍼티 할당이 성능을 저하시키지는 않는다. 그 이유는 자바스크립트 엔진이 성능 최적화를 위해 Hidden Class를 사용하기 때문이다. 자바스크립트 엔진 성능 최적화 - Hidden Class 자바스크립트는 동적 타입 언어이기 때문에 객체를 생성할 때 메모리를 얼마나 할당해야 하는지 모른다. 따라서 속성이 추가될 때마다 랜덤한 주소에 메모리를 할당하고 그 속성을 다루기 위해 딕셔너리 랜덤한 메모리에 접근해야 한다. 또한 객체의 속성들이 언제 바뀔지 모르기 때문에 Name-Value 쌍을 항상 유지해야 한다. 이러한 방식은 자바스크립트가 다른 언어에 비해 느려질 수 밖에 없는 한계를 가지게 만든다. V8 엔진에서는 이를 최적화 시키기 위해 런타임에 내부적으로 숨겨진 클래스를 만들어 ..
1) 타입 변환이란? 자바스크립트의 모든 값은 타입이 있다. 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다. var x = 10; var str = x.toString(); console.log(typeof str, str); // string 10 console.log(typeof x, x); // number 10 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 타입 강제 변환이라 한다. var x = 10; var str = x + ''; console.log(typeof str, str); // string 10 console.log(typeof x, x)..
1) 블록문0개이상의 문을 중괄호로 묶은 것자바스크립트는 블록문을 하나의 실행 단위로 취급한다.블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다.   2) 조건문조건문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.  if … else 문조건식의 평가 결과가 true일 경우 if 문의 코드 블록이 실행되고, false일 경우 else 문의 코드 블록이 실행된다.만약 if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 불리언 값으로 강제 변환되어 실행할 코드 블록을 결정한다. 조건식을 추가하여 조건에 따라 실행될 코드 블록을 늘리고 싶으면 else if 문을 사용한다.else if 문과 else ..
연산자(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자라 한다. 피연산자는 값으로 평가될 수 있는 표현식이어야 한다. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이다. 1) 산술 연산자 산술 연산자는 피연산자를대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다. 이항 산술 연산자 2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 모든 이항 산술 연산자는 피연산의 값을 변경하는 부수 효과가 없다. (즉, 언제나 새로운 값을 만든다.) 단항 산술 연산자 1개의 피연산자를 산술 연산하여 숫자 값을 만든다..
자바스크립트의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다. 😎 타입스크립트의 타입과 자바스크립트의 타입은 일치하지 않음!! 1) 숫자 타입 ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 즉, 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않는다. Infinity : 양의 무한대 -Infinity : 음의 무한대 NaN : 산술 연산 불가 (not-a-number) 2) 문자열 타입 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현할 수 있다. 문자열은 작은따옴표(..
1) 값 (value)값은 식이 평가되어 생성된 결과를 말한다.모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트(bit)의 나열로 저장된다.  2) 리터럴 (literal)리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.리터럴은 사람이 이해할 수 있는 문자 또는 미리 약속된 기호로 표기한 코드다.자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다. 리터럴예시비고정수 리터럴100 부동소수점 리터럴10.5 2진수 리터럴0b010000010b로 시작8진수 리터럴0o101ES6에서 도입. 0o로 시작16진수 리터럴0x41ES6에서 도입. 0x로 시작문자열 리터럴‘Hello’”World”  불리언 리터럴truefalse  nu..
1) 변수란 무엇인가? 왜 필요한가? 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 각 셀은 고유의 메모리 주소를 갖는다. 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 프로그래밍 언어는 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어 들여 재사용하기 위해 변수라는 매커니즘을 제공한다. 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 변수에 값을 저장하는 것을 할당(assignment)이라 하고, 변수에 저장된 값을 읽어 들이는 것을 참조(reference)라 한다. 변수 이름을 사용해 참조를 요청하면 자바스크립트..
ZoD
'Javascript' 카테고리의 글 목록 (6 Page)