이 기사에서는 암시적 유형 변환이 무엇인지 설명합니다. js 암시적 유형 변환에 대한 소개에는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
JavaScript의 데이터 유형은 매우 약합니다. 산술 연산자를 사용할 때 연산자 양쪽의 데이터 유형은 임의적일 수 있습니다. 예를 들어 숫자에 문자열을 추가할 수 있습니다. 서로 다른 데이터 유형 간에 연산을 수행할 수 있는 이유는 JavaScript 엔진이 연산 전에 해당 데이터 유형에 대해 조용히 암시적 유형 변환을 수행하기 때문입니다. 다음은 숫자 유형과 부울 유형이 추가된 것입니다.
3 + true; // 结果:4
"hello"(1); //结果: error: not a function null.x; // 结果:error: cannot read property 'x' of null
2 + 3; //结果: 5 "hello" + " world"; // 结果:"hello world"
"2" + 3; // 结果:"23" 2 + "3"; //结果: "23"
1 + 2 + "3"; // "33"
(1 + 2) + "3"; // "33"
1 + "2" + 3; // "123"
var x = NaN; x === NaN; // false
isNaN("foo"); // true isNaN(undefined); // true isNaN({}); // true isNaN({ valueOf: "foo" }); // true
NaN을 감지하는 안정적이고 정확한 방법이 있습니다.
우리 모두는 NaN만이 자신과 같지 않다는 것을 알고 있습니다. 따라서 숫자가 자신과 같은지 확인하려면 부등호(!==)를 사용하면 다음과 같이 NaN을 감지할 수 있습니다. : # 🎜🎜#
var a = NaN; a !== a; // true var b = "foo"; b !== b; // false var c = undefined; c !== c; // false var d = {}; d !== d; // false var e = { valueOf: "foo" }; e !== e; // false
function isReallyNaN(x) { return x !== x; }
객체의 암시적 변환
"the Math object: " + Math; // "the Math object: [object Math]" "the JSON object: " + JSON; // "the JSON object: [object JSON]"
Math.toString(); // "[object Math]" JSON.toString(); // "[object JSON]"
마찬가지로 객체는 함수 값을 통해 숫자로 변환될 수도 있습니다. 물론 다음과 같이 함수 값을 사용자 정의할 수도 있습니다.
"J" + { toString: function() { return "S"; } }; // "JS" 2 * { valueOf: function() { return 3; } }; // 6
var obj = { toString: function() { return "[object MyObject]"; }, valueOf: function() { return 17; } }; "object: " + obj; // "object: 17"
: false, 0, -0, "", NaN, null, undefine
, 숫자와 문자열이 있기 때문입니다. 객체의 값은 false이므로 함수의 매개변수가 전달되는지 확인하기 위해 참값 변환을 직접 사용하는 것은 안전하지 않습니다. 예를 들어 다음과 같이 기본값이 있는 선택적 매개변수를 가질 수 있는 함수가 있습니다.function point(x, y) { if (!x) { x = 320; } if (!y) { y = 240; } return { x: x, y: y }; }
point(0, 0); // { x: 320, y: 240 }
정의되지 않음을 감지하는 더 정확한 방법은 typeof 연산을 사용하는 것입니다: function point(x, y) {
if (typeof x === "undefined") {
x = 320;
}
if (typeof y === "undefined") {
y = 240;
}
return { x: x, y: y };
}
point(); // { x: 320, y: 240 } point(0, 0); // { x: 0, y: 0 }
다른 방법 다음과 같이 정의되지 않은 것과 비교하기 위해 매개변수를 사용합니다:
if (x === undefined) { ... }
1. 유형 오류는 유형 변환에 의해 숨겨질 수 있습니다.
2. "+"는 피연산자에 따라 문자열 연결과 산술 추가를 모두 나타낼 수 있습니다. 둘 중 하나가 문자열이면 문자열 연결입니다. 3. 객체는 Value 메서드를 통해 자신을 숫자로 변환하고, toString 메서드를 통해 문자열로 변환합니다.
4. 값이 Of 메서드인 개체는 문자열 형식으로 동일한 숫자를 반환하도록 해당 toString 메서드를 정의해야 합니다.
5. 일부 정의되지 않은 변수를 감지할 때 실제 값 연산 대신 유형 Of 또는 정의되지 않음과의 비교를 사용해야 합니다.
관련 권장사항:
암시적 변환을 사용하는 방법은 무엇인가요? 암시적 변환 예제 사용법 요약
JavaScript 데이터 유형의 암시적 유형 변환에 대한 간략한 소개_javascript 기술
위 내용은 암시적 유형 변환이란 무엇입니까? js 암시적 유형 변환 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!