다른 배열에 배열을 추가하고 싶어서 Firebug에 다음 코드를 작성했습니다.
[1,2] + [3,4]
그러나 예기치 않게 다음과 같이 출력되었습니다.
"1,23,4"
없이 예상한 대로 출력:
[1,2,3,4]
JavaScript의 + 연산자에는 두 가지 목적이 있습니다.
두 개의 숫자를 추가하고
두 문자열을 연결합니다.
사양은 배열에 대한 + 연산자의 동작을 정의하지 않으므로 자바스크립트는 먼저 배열을 문자열로 변환한 다음 문자열에 대해 + 연산을 수행합니다.
두 배열을 연결하려면 배열의 concat 메소드를 사용할 수 있습니다.
[1, 2].concat([3, 4]) // [1, 2, 3, 4]
JavaScript에는 6가지 내장 데이터 유형이 있습니다. 연결, 원본 작성자는 원본 유형 시스템의 데이터 유형을 의미해야 합니다. JavaScript에는 실제로 두 가지 유형 시스템이 있습니다. 첫 번째 유형 시스템은 <code><strong><span style="color: #ff0000;">typeof</span></strong>
来识别,称之为原始(primitive)类型系统,而第二套类型系统是以它为基础,从 object 这一种类型中发展起来的,即对象类型系统,对象类型系统用 instanceof
来识别。)
undefined
boolean
number
string
function
object
需要注意的是,null
和 <strong><span style="color: #ff0000;">[]</span></strong>
是两个截然不同的类型,当使用 <code><strong><span style="color: #ff0000;">typeof</span></strong> 运算时,它们却都返回 object
。 但是在使用 +
运算符时,在这两种情况下的工作方式是不同的。
在JavaScript 中,数组不是基本类型
,它的存在仅仅是一个糖衣语法,它其实是 Array
类的实例。(ps:function
其实也是Function
类实例的糖衣语法。)
如果说道现在你脑子还是清醒的,是时候加点儿猛料了。javascript
的对象包装器类型例如 new Number(5)
, new Boolean(true)
和 <strong><span style="color: #ff0000;">new String("abc")</span></strong>
也都是 object
类型,它们不是数字,布尔,字符串。然而,对于算数运算符 Number
和 Boolean
表现的为数字。
还记得我前面说过的 + 运算符吗?它的操作对象是 数字和字符串,也就是 Number
,Boolean
,String
或者 number
,boolean
,string
typeof
로 식별됩니다. Primitive 유형 시스템이라고 하며, 두 번째 유형 시스템은 이를 기반으로 객체 유형, 즉 객체 유형 시스템을 개발하여
instanceof
로 표현합니다.
를 사용할 때
null
🎜🎜과 🎜🎜[]🎜🎜
은 완전히 다른 유형이라는 점에 유의해야 합니다. 🎜🎜typeof🎜🎜 작업이지만 모두 🎜🎜객체
🎜🎜를 반환합니다. 그러나 +
연산자를 사용할 경우 이 두 경우에 작동하는 방식이 다릅니다. 🎜🎜JavaScript에서 🎜🎜배열은 기본 유형이 아닙니다
🎜🎜. 그 존재는 실제로 🎜🎜 배열
의 인스턴스입니다. 🎜🎜수업. (ps: 🎜🎜function
🎜🎜은 실제로 🎜🎜Function
🎜🎜 클래스 인스턴스의 설탕 코팅된 구문입니다.)🎜🎜지금도 마음이 맑다면, 좀 더 추가할 시간입니다. 정말 놀랍습니다. 🎜🎜 new Number(5)
🎜🎜, 🎜🎜new Boolean(true)
🎜🎜 및 javascript
에 대한 객체 래퍼 유형 >🎜🎜new String("abc")🎜🎜 역시 object
유형이며 숫자, 부울 또는 문자열이 아닙니다. 그러나 산술 연산자 숫자
및 부울
은 숫자를 나타냅니다. 🎜🎜앞서 언급한 + 연산자를 기억하시나요? 연산 개체는 숫자와 문자열입니다. 즉, 🎜🎜Number
🎜🎜, 🎜🎜Boolean
🎜🎜, 🎜🎜String
🎜🎜 또는 🎜🎜 숫자
🎜🎜, 🎜🎜부울
🎜🎜, 🎜🎜문자열
🎜🎜. 🎜다음 표는 다양한 유형에 대해 + 연산자를 연산한 후 얻은 결과 유형입니다.🎜---------------------------------------------------------------------------------------- | undefined | boolean | number | string | function | object | null | array ---------------------------------------------------------------------------------------- undefined | number | number | number | string | string | string | number | string boolean | number | number | number | string | string | string | number | string number | number | number | number | string | string | string | number | string string | string | string | string | string | string | string | string | string function | string | string | string | string | string | string | string | string object | string | string | string | string | string | string | string | string null | number | number | number | string | string | string | number | string array | string | string | string | string | string | string | string | string -------------------------------------------------------------------------------------------🎜🎜이 표는 Chrome 13, Firefox 6, Opera 11 및 IE9에 적용됩니다. 숙제: 다른 브라우저 호환성을 확인하세요. 🎜🎜🎜참고: 사용자 정의 개체에 대한 + 연산이 항상 문자열 결과를 생성하는 것은 아닙니다. 이는 주로 객체 유형을 기본 유형으로 변환하는 방법에 따라 달라집니다. 🎜🎜예: 🎜
var o = { valueOf : function () { return 4; } };🎜o + 2를 계산하면 숫자인 6이 나오고, o + '2'를 계산하면 문자열인 '42'가 나옵니다. 🎜
위 내용은 JavaScript에서 [1,2] + [3,4]가 [1,2,3,4]와 같지 않은 이유에 대한 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!