이 두 문자열의 차이점 (JavaScript)

Sep 07 2020

두 가지 방법으로 값이있는 문자열 데이터 유형 변수 를 만들려고했습니다 .

  1. 문자열 리터럴
  2. 새 키워드 사용

그러나 나에게는 둘 다 console.log의 표현이 다른 것 같습니다 . 누군가 2nd way가 문자열을 반환하지 않거나 어떻게 든 다른지 말해 줄 수 있습니까?

var str1 = "abc";
var str2 = new String("def");
console.log(str1);
console.log(str2);

예상 :

abc, def

산출:

답변

9 xMayank Sep 07 2020 at 05:07

JavaScript에는 기본 유형과 객체라는 두 가지 주요 유형 범주가 있습니다.

typeof new String(); // "object"
typeof '';           // "string"

다음과 같은 변수에 기본 값을 할당하는 문 :

var str1 = "Hi";

JavaScript는 내부적으로 다음을 사용하여 변수를 만듭니다.

String("Hi")

new 키워드를 사용하면 다르게 작동하며 대신 객체를 반환합니다.

4 GauravMogha Sep 07 2020 at 05:07

호출 new String(something)은 String 인스턴스 객체를 만듭니다.

결과는 console.log ()를 통해 동일하게 보입니다. 전달한 String 인스턴스에서 기본 문자열을 추출하기 때문입니다.

그래서 : 단순한 String ()은 문자열 프리미티브를 반환합니다. new String ( 'xyz')는 String 생성자에 의해 생성 된 객체를 반환합니다.

String 인스턴스를 명시 적으로 구성 할 필요는 거의 없습니다.

2 LarsNielsen Sep 07 2020 at 05:07

두 가지 다른 작업을하고 있습니다. 은 var str1 = "abc"당신에게 기본을 제공합니다. 는 동안 var str2 = new String("def");당신에게 문자열 객체를 제공합니다. 이 두 유형은 다르게 작동합니다.

AkhilRavindran Sep 07 2020 at 05:12

String 객체를 사용하면 일련의 문자로 작업 할 수 있습니다. 자바 스크립트의 문자열 프리미티브 데이터 유형을 여러 도우미 메서드로 래핑합니다.

JavaScript는 문자열 프리미티브와 String 객체 사이를 자동으로 변환하므로 문자열 프리미티브에서 String 객체의 도우미 메서드를 호출 할 수 있습니다.

Unknow Sep 07 2020 at 05:07

개체를 인쇄 할 때 종종 콘솔이 개체의 속성을 인쇄합니다.

기본 요소 인 경우 콘솔은 값을 인쇄합니다.

프리미티브는 박스형이 아니지만 생성자를 사용하여 문자열을 생성하면 문자열은 객체에 박스형이며 항상 속성을 갖습니다.

리터럴이면 .boxing이 발생하기 때문에 연산자 를 사용하여 문자열의 속성에 액세스 할 때만 속성을 가지지 만 그 후에도 추가 추가가없는 리터럴이므로 인쇄 할 때 "The cat is very grumpy"값만 인쇄하고 아무것도 인쇄하지 않습니다. 더. 프리미티브 리터럴은 항상 속성이있는 객체는 아니며 박스형 일 때만 객체입니다.