JavaScript에서 연산자 규칙의 암시적 유형 변환은 무엇인가요? JavaScript를 배우는 모든 초보자가 알아야 할 질문입니다. 다음 글에서는 주로 JavaScript의 연산자 규칙과 암시적 유형 변환을 소개합니다. 정보 아래에서 살펴보겠습니다.
암시적 유형 변환
JavaScript에서는 비교 연산이나 덧셈, 뺄셈, 곱셈, 나눗셈의 4가지 산술 연산을 수행할 때 JavaScript의 암시적 유형 변환 메커니즘이 작동하는 경우가 많으며 이 부분이 혼동되는 경우가 많습니다. . 혼란스러운 곳. 예를 들어, 브라우저의 console.log 작업은 값을 문자열로 변환한 다음 표시하는 경우가 많지만, 수학적 작업은 먼저 값을 숫자 유형(Date 유형 개체 제외)으로 변환한 다음 작업을 수행합니다.
먼저 JavaScript의 몇 가지 일반적인 연산자 연산 결과를 살펴보겠습니다. 이 섹션을 읽은 후 각 항목을 합리적으로 설명할 수 있기를 바랍니다.
JavaScript 기본 유형 우리는 종종 숫자 유형, 문자열 유형, 부울 유형 및 빈 유형을 포함한다고 이야기합니다. 우리가 일반적으로 사용하는 기본 유형 간의 변환 함수는 문자열, 숫자 및 부울입니다.
// String
let value = true;
console.log(typeof value); // boolean
value = String(value); // now value is a string "true"
console.log(typeof value); // string
// Number
let str = "123";
console.log(typeof str); // string
let num = Number(str); // becomes a number 123
console.log(typeof num); // number
let age = Number("an arbitrary string instead of a number");
console.log(age); // NaN, conversion failed
// Boolean
console.log( Boolean(1) ); // true
console.log( Boolean(0) ); // false
console.log( Boolean("hello") ); // true
console.log( Boolean("") ); // false
로그인 후 복사
마지막으로 다음 JavaScript 기본 유형 변환 테이블을 얻을 수 있습니다( 복합 유형에서 기본 유형으로의 변환 예 포함):
obj = {
valueOf: function () {
console.log("valueOf");
return {}; // not a primitive
},
toString: function () {
console.log("toString");
return {}; // not a primitive
}
}
obj + 1
// error
Uncaught TypeError: Cannot convert object to primitive value
at <anonymous>:1:5
로그인 후 복사
值得一提的是对于数值类型的 valueOf() 函数的调用结果仍为数组,因此数组类型的隐式类型转换结果是字符串。而在 ES6 中引入 Symbol 类型之后,JavaScript 会优先调用对象的 [Symbol.toPrimitive] 方法来将该对象转化为原始类型,那么方法的调用顺序就变为了: