왜 {{정의되지 않은 +번호}}}이(가) 반환되는 거죠?
Angular를 작업하고 있습니다.JS 프로젝트다음 식에서 번호를 반환하는 것을 알 수 있었습니다.
뷰에서{{undefined + 10}}는 10 을 출력합니다.
JavaScript에서는undefined + 10는 NaN을 출력합니다.
이 동작은 왜 뷰에서 다른가요?
그게 보간법의 장점이야
내장된 식과 함께 보간 마크업을 Angular에서 사용합니다.텍스트 노드 및 속성 값에 데이터 바인딩을 제공하는 JS.
보간된 값이 String이 아닌 경우 다음과 같이 계산됩니다.
- 정의되지 않은 null은 " (빈 문자열)로 변환됩니다.
- 값이 숫자, 날짜 또는 배열이 아닌 개체일 경우
$interpolate커스텀을 찾다toString()오브젝트상에서 기능하고, 그것을 사용합니다. - 상기 사항이 적용되지 않을 경우,
JSON.stringify사용됩니다.
실행 시 컴파일러는$interpolate텍스트 노드 및 요소 속성에 포함된 표현식이 포함된 보간 마크업이 포함되어 있는지 여부를 확인합니다.
또한 각도 컴파일러는 다음과 같이 사용합니다.interpolateDirective모델 변경을 듣기 위해 watchers를 등록합니다.그게 소화 주기의 과정이에요.
보간법의 원리에 대해서는, 여기를 참조해 주세요.
왜죠
{{'' == +Infinity}}true를 반환합니까?
AngularJS에서는$interpolate서비스 평가+Infinity로.0가치.
angular.module('app', [])
.controller('Controller', ['$injector', function($injector) {
}]);
setTimeout(function() {
angular.bootstrap(document.getElementById('body'), ['app']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<div id="body">
<div ng-controller="Controller">
{{+Infinity}}
</div>
</div>
이제 그 표현은 남아 있다.{{0==''}}.
왜죠0==''에 대해 평가 대상true?
왼쪽은 유형입니다.Number오른쪽은 타입입니다.String.
이 경우 오른쪽 오퍼랜드는 Number: 라고 입력합니다.
0 == Number('') => 0 == 0,
평가 대상true부울값
다음은 추상 평등 비교 알고리즘입니다.
Type(x)이 Number이고 Type(y)이 String이면 x == ToNumber(y
Angular(각도)를 참조하여 설명하는 방법JS 코드, 마법은 다음과 같습니다.
function plusFn(l, r) {
if (typeof l === 'undefined') return r;
if (typeof r === 'undefined') return l;
return l + r;
}
더하기 식이 있는 경우 이 함수는 템플릿으로 구문 분석됩니다.
표현 치환은 Parser.parse(802.165:16155) 또는 parse.parse:1646(https://github.com/angular/angular.js/blob/87a586eb9a23cfd0d0bb681cc778b4b8e5c8451d/src/ng/parse.js#L1646))에 의해 호출됩니다.
언급URL : https://stackoverflow.com/questions/46075072/why-does-undefined-number-return-number
'programing' 카테고리의 다른 글
| 스프링 부트 및 SQLite (0) | 2023.03.11 |
|---|---|
| 각도 스코프 변수를 Javascript에 전달 (0) | 2023.03.11 |
| Oracle SQL을 사용하여 구분자 위치별로 문자열 분할 (0) | 2023.03.11 |
| 사용자 지정 게시 유형의 사용자 지정 데이터를 표시하는 방법 (0) | 2023.03.11 |
| Wordpress - 용어별 사용자 지정 게시 유형 목록의 사용자 지정 분류 페이지 (0) | 2023.03.11 |