이 기사는 js 암시적 변환에 대한 지식을 제공합니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
[] == ![] //true ==> "" == false 123 ^ [] //123 ==> 123 ^ 0 ~{} //-1 ==> ~0 {} >= {1,2} //true ==>因为大于等于的比较,不是相等的比较,所以[object Object] >=[object Object] [null] == "" //true ==> [""] == ""
단항 연산자: * 연산자를 포함하여 Number()를 통해 변환, / 연산자, 모두 Number()로 변환
+undefined //NaN
논리 연산자:! ), 피연산자를 부울 유형으로 변환합니다
Bit 연산: ~, |, &, ^; 피연산자 중 하나가 NaN이면 동일할 수 있습니다. 피연산자가 0;
//由以下变化可以证得: NaN ^ NaN ^ NaN = 0
plus 연산자인 경우 더 복잡해요
우선순위가 가장 높은 것은 문자열입니다. 문자열에 피연산자가 추가되면 문자열(x)이 되고 문자열 접합을 수행합니다
console.log("a" + 1); //"a1" console.log("a" + "1"); //"a1" console.log("a" + false); //"afalse" console.log("a" + undefined); //"aundefined" console.log("a" + NaN); //"aNaN" console.log("a" + null); //"anull" console.log("a" + {}); //"a[object Object]"
둘째, 숫자, 객체는 정상적인 상황에서 문자열 유형을 출력합니다
//console.log(1 + "1"); //"11" console.log(1 + 1); //2 console.log(1 + true); //2 console.log(1 + undefined); //NaN console.log(1 + NaN); //NaN console.log(1 + null); //1 console.log(1 + {}); //"1[object,Object]"
한 쪽이 Boolean이거나 두 쪽 모두 Boolean인 경우 Number로 처리됩니다. 마찬가지로 undefound와 null
console.log(true + true); //2 console.log(true + undefined); //NaN console.log(true + NaN); //NaN console.log(true + null); //1 console.log((true + [NaN])); //"trueNaN"
minus 기호도 마찬가지입니다. Number()는 양면에서 처리됩니다
비교 연산: ==, >, <, >=, >=, != 규칙을 따르세요(Elevation 3에서 발췌):
주목할 만한 점: 객체 간 >= 및 ==(!=의 비교 방법 )는 다릅니다. 전자는 toString() 반환 값의 비교이고, 후자는 양쪽이 문자열인 경우 문자 인코딩 크기에 따라 수행됩니다. 문자열, 객체 등을 숫자형 값으로 변환한 후 비교해 보세요;
console.log("NaN" == NaN); //false console.log(undefined == null); //true console.log({} >= {1:2}); //true console.log({1:2} != {}); //true console.log({} == {1:2}); //false console.log([1] == [1]); //false console.log(null == 0); //false
위 내용은 js 암시적 변환에 대한 지식 설명(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!