>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술에서 " "의 함정에 대한 깊은 이해

JavaScript_javascript 기술에서 " "의 함정에 대한 깊은 이해

WBOY
WBOY원래의
2016-05-16 17:47:221084검색
1. 대괄호 두 개 추가
[] []
대괄호는 문장 블록의 기능이 없으므로 여기서 대괄호 두 개는 배열입니다. 두 개의 배열(객체 유형)을 추가하려면 먼저 값 유형(기본 유형)으로 변환해야 합니다.
1. 값 유형으로 변환하고 valueOf를 호출합니다. []의 valueOf()는 여전히 고유합니다.
코드 복사 코드는 다음과 같습니다.

var arr = [];
arr.valueOf() === arr; // true

2, 변환됨 to string, toString of [] 빈 문자열입니다
코드 복사 코드는 다음과 같습니다.

[].toString(); / / ""
String([]) // ""

결과가 나왔습니다. 두 개의 빈 문자열을 추가해도 결과는 여전히 빈 문자열입니다. 즉, 여기서 " "는 숫자 추가가 아닌 문자열 연결을 의미합니다.

2. 중괄호, 대괄호 추가
코드 복사 코드는 다음과 같습니다:

{} []

여기의 중괄호는 여전히 객체 리터럴이 아니라 빈 명령문 블록입니다. 따라서 제거할 수 있으며 이는
코드 복사 코드는 다음과 같습니다.

[]

이전에 나타난 두 피연산자가 실제 단일 피연산자가 되었음을 참고하세요. " " 연산자는 피연산자가 하나뿐인 경우 산술 덧셈이라는 한 가지 의미만 나타냅니다. 즉, 여기서는 문자열 연결의 의미가 없습니다.
대괄호 안의 toString()은 빈 문자열로
코드 복사와 동일합니다. 코드는 다음과 같습니다. :

""

" "는 산술 덧셈 연산을 나타냅니다. 문자열이 숫자가 아니므로 숫자형으로 변환됩니다. 이전 기사에서 언급했듯이 빈 문자열은 숫자 유형인 0으로 변환됩니다.
그럼 최종 결과는 0이군요.

3. 대괄호, 중괄호 추가
코드 복사 코드는 다음과 같습니다. 다음과 같습니다:

[] {}

위와 비교해 괄호와 괄호의 순서만 바뀌었습니다. 결과는 다릅니다. 교정기를 오른쪽에 배치한 후에는 위에서 설명한 교정기의 의미가 달라집니다. 여기서 중괄호는 명령문 블록이 아니라 객체 리터럴입니다.
" "의 양쪽 피연산자는 각각 "" 및 "[object Object]" 값 유형으로 변환됩니다. 이때 " "는 문자열 연결을 의미합니다. 즉,
코드 복사 코드는 다음과 같습니다.

"" "[object Object ]"

결과는 "[객체 개체]"입니다.

4. 괄호도 넣어보세요
갑자기 변덕! 괄호에는 모호성이 있지만 피연산자로 사용할 수는 없습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.