본문 바로가기
728x90

분류 전체보기89

[JS][네이티브] 내부 [[Class]] 내부 [[Class]] typeof가 'object'인 값(배열 등)에는 [[Class]]라는 내부 프로퍼티(전통적인 클래스 지향 개념에서의 클래스라기보단 내부 분류법의 일부라고 보자)가 추가로 붙는다. 이 프로퍼티는 직접 접근할 수 없고 Object.prototype.toString()이라는 메서드에 값을 넣어 호출함 으로써 존재를 엿볼 수 있다. 예를 들면, Object.prototype.toString.call([1, 2, 3]); // [object Array] Object.prototype.toString.call(/regex-literal/i); // [object RegExp] 내부 [[class]] 값이, 배열은 Array, 정규식은 RegExp임을 알 수 있다. 대부분 내부 [[Class.. 2022. 1. 27.
[JS][네이티브] 네이티브 개요 다음은 가장 많이 쓰는 네이티브들이다. String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol() 네이티브는 사실 내장 함수이다. 자바스크립트의 String()이 자바의 문자열 값을 생성하는 String() 생성자와 비슷하게 보여서 다음 코드처럼 쓸 수 있음을 눈치챌 수 있을 것이다. var s = new String("Hello World"); console.log(s.toString()); // Hello World 네이티브는 생성자처럼 사용할 수 있지만 실제로 생성되는 결과물은 우리의 예상과 다를 수 있다. var a = new String("abc"); typeof a; // object..? st.. 2022. 1. 27.
[JS] this 란? this 란? javascript에서 함수의 this 키워드는 다른언어 들과 비교하여 조금 다르게 동작한다. 또한 strict mode와 non-strict node사이에서도 조금 다르다. 대부분의 경우, this의 값은 함수를 호추하는 방법에 의해 결정된다. 실행하는 동안의 할당에 의해 설정될 수 없고, 함수가 호출될 때 마다 다를 수 있다. ES5는 함수의 this값이 함수가 어떻게 호출되었는지 개의치 않고 설정할 수 있는 bind 메소드를 소개했다. this의 이해 this의 값은 어떻게 변화할까? this가 어떤 값과 연결되는 지는 this의 바인딩을 통해서 확인해 볼 수 있다. 바인딩이란 this의 호출 방식에 따라서 this가 특정 '객체'에 연결되는 것이다. this의 바인딩은 일반 함수 내.. 2022. 1. 26.
[JS][값][마무리] 값 vs 레퍼런스 값 vs 레퍼런스 다른 언어에서 값은 사용하는 구문에 따라 값-복사 또는 레퍼런스-복사의 형태로 할당/전달 된다. C++에서는 어떤 함수에 전달한 숫자 인자 값을 그 함수 내에서 수정하려면 int& myNum형태로 함수 인자를 선언하고, 호출하는 쪽에서는 변수 x를 넘기면 myNum은 x를 참조한다. 레퍼런스는 포인터의 특수한 형태로 다른 변수의 포린터를 가진다. 레퍼런스 인자를 선언하지 않으면 전달한 값은 아무리 복잡한 객체일지라도 언제나 복사된다. 자바스크립트는 포인터라는 개념 자체가 없고 참조하는 방법도 조금 다르다. 우선 어떤 변수가 다른 변수를 참조할 수 없다. 그냥 안 된다. 자바스크립트에서 레퍼런스는 (공유된)값을 가리키므로 서로 다른 10개의 레퍼런스가 있다면 이들은 저마다 항상 공유된 단.. 2022. 1. 26.
[JS][값] 특수 값 특수 값 타입별로 자바스크립트 개발자들이 조심해서 사용해야할 특수한 값들이 있다. 값 아닌 값 undefined타입의 값은 undefined밖에 없다. null타입도 값은 null뿐이다. 그래서 이 둘은 타입과 값이 항상 같다. undefined와 null은 종종 '빈'값과 '값 아닌'값을 나타낸다. 이와 다른 의미로 사용하는 개발자도 있다. 예를들면, null은 빈 값이다. undefined는 실종된 값이다. 또는 null은 예전에 값이 있었지만 지금은 없는 상태다. undefined는 값을 아직 가지지 않은 것이다. undefined와 null의 의미를 어떻게 '정의'하여 쓰든지, null은 식별자가 아닌 특별한 키워드 이므로 null이라는 변수에 뭔가 할당할 수 는 없다. 오! 이런.. 그런데 불행.. 2022. 1. 26.
[JS][값] 숫자 숫자 자바스크립트의 숫자 타입은 number가 유일하며 '정수', '부동 소수점 숫자'를 모두 아우른다. '정수'에 따옴표를 친 건, 다른 언어와 달리 자바스크립트 에는 진정한 정수가 없다는 이유로 오랫동안 욕을 먹었기 때문이다. 언젠가 개선될 날이 오긴 하겠지만. 일단 현재는 모든 숫자를 number타입 하나로만 표시한다. 따라서 자바스크립트의 '정수'는 무동 소수점 값이 없는 값이다.(예: 42.0은 '정수' 42와 같다.) 사실상 모든 자바스크립트 언어를 통틀어 대부분의 현대 프로그래밍 언어는 'IEEE 75' 표준을 따른다. 자바스크립트 number도 IEEE 754 표준을 따르며, 그중에서도 정확히는 '배 정도(Double Precision)'표준 포맷을 사용한다. 웹서핑을 하다보면 이진 부동 .. 2022. 1. 25.
728x90