angular.defined의 이점은 무엇입니까?
angular.isdefined
몇몇 and foo === undefined
당장 장점이 생각나지 않는다.
Javascript에서 진정으로 정의되지 않은 변수에 액세스하면 typeof를 제외하고 오류가 발생합니다.할 수 있는 것은 「」입니다.Angular.isDefined
산이있있 있있있다다를 들어 이 동작합니다.
angular.isDefined(window.obj);
obj는 정의되지 않은 창의 속성이기 때문입니다.
예상되는 동작의 예:
var foo;
var bar = 42;
typeof foo !== 'undefined'; // false
typeof bar !== 'undefined'; // true
typeof baz !== 'undefined'; // false
angular.isDefined(foo); // false
angular.isDefined(bar); // true
angular.isDefined(baz); // ReferenceError
출처는 다음과 같습니다.
function isDefined(value) {return typeof value !== 'undefined';}
첫 번째 이유는 분명 낮은 장황함이지만, 특히 함수가 내부적으로 사용되는 경우, 그것은 또한 미래의 각성을 증명합니다.
캄룰이 말한 것처럼 각도가 하는 일은
function isDefined(value) { return typeof value !== 'undefined'; }
즉, "이 변수의 유형이 정의되지 않았습니다"...예제에서는 변수의 내용이 정의되지 않은 것과 같고 각도가 변수의 유형을 확인하는 것을 비교합니다.
js에서는 유형이 동적이므로 값을 할당하지 않을 때까지 변수에 유형이 없습니다.so isDefined는 변수 선언이 존재하는지 여부와 이 변수에 내용이 있는지 여부를 모두 알려줍니다.
단, 변수는 null일 수 있으며, 이 경우 변수의 유형은 객체가 될 수 있으므로 주의하십시오.
다음 코드를 사용해 볼 수 있습니다.
var a;
var b = 'asd';
var c = null;
console.log('a: ' + typeof a);
console.log('b: ' + typeof b);
console.log('c: ' + typeof c);
console.log('d: ' + typeof d);
콘솔에 다음 화면이 표시됩니다.
a: undefined
b: string
c: object
d: undefined
그렇게,
a) var는 존재하지만 값이 없기 때문에 정의되어 있지 않다.
b) var가 존재하며 가치가 있다.이 값은 문자열이므로 이 값은 문자열의 유형입니다.
c) var는 존재하지만 null입니다.타입은 간섭할 수 없기 때문에 그 타입은 오브젝트입니다.
d) var가 선언되지 않았기 때문에...정의되어 있지 않다
요점은 "a"와 "d..."의 차이입니다.다음으로 시도해보겠습니다.
console.log('a is undefined? ' + a === undefined);
console.log('d is undefined? ' + d === undefined);
콘솔에 다음 항목이 표시됩니다.
false
Uncaught ReferenceError: d is not defined
어떤...큰 문제가 되는 이유는 다음과 같습니다.
a) 그것이 사실이 아닐 때 정의되지 않은 것을 알려준다.
d) 예외를 발생시켜...코드는 실패합니다.
결론
변수가 존재하는지 확인하고 값으로 초기화되었는지 확인하는 경우 정의되지만 null은 개체(정의된 변수도 마찬가지)이므로 null 값에 주의하십시오.
변수가 존재하며 유효한 값(따라서 늘이 아님)이 있는지 검증하려면 다음과 같은 작업을 수행할 수 있습니다.
if (myvar) {
console.log('myvar is defined and is not null');
} else {
console.log('myvar is undefined or null');
}
또 하나의 좋은 트릭은 var가 ||로 정의되지 않은 경우 값을 초기화하는 것입니다.
myvar = myvar || 'some init value';
위의 코드는 null이 아닌 myvar 값이 정의되어 있는 경우 myvar 값을 사용하고, 정의되어 있지 않은 경우 myvar 값을 사용합니다.
myvar가 false로 평가될 경우 @TonyBrasunas가 코멘트를 달았듯이 'some init value'가 할당됩니다.이 방법을 사용하기 전에 이 점을 고려하십시오.
이것은 다음과 같은 기능에서 유용합니다.
function split(input, charToSplit) {
charToSplit = charToSplit || ' ';
return input.split(charToSplit);
}
그런 다음 기본적으로 공백으로 분할할 수 있습니다. var input = 'var splited asd', var splited = split(input), // --> splited = ['splited', 'splited']
아니면... 다른 글자와 함께:
var input = 'asd|asd';
var splited = split(input, '|');
// --> splited= ['asd', 'asd']
추측만 할 수 있지만 제 추측은 꽤 괜찮은 것 같아요.
다음 두 표현은 기능적으로 동일합니다.
typeof foo !== 'undefined'
angular.isDefined(foo)
후자의 장점은 다음과 같습니다.
1) 어떤 것이 정의되어 있는지 물어보는 것이 정의되어 있지 않은지 물어보는 것보다 정신적인 부담이 적다는 것은 의심의 여지가 없다.
2)angular.isDefined(foo)
보다 훨씬 덜 '긴장'하다typeof foo !== 'undefined'
따라서 무슨 일이 일어나고 있는지 파악하는 것이 더 빠릅니다.
주의: 이것들은 내가 우위성을 주장하는 것이 아니다.angular.isDefined
제가 전달하고자 하는 것은 앵글 팀이 왜 이 모든 것을 창조하고 싶어했는지에 대한 제 추측입니다.angular.isDefined
일반 자바스크립트보다 낫다고 생각하는 이유.
언급URL : https://stackoverflow.com/questions/27818331/what-is-the-benefit-of-angular-isdefined
'source' 카테고리의 다른 글
워드프레스: "HTTP 오류"파일 업로드 시 (0) | 2023.04.06 |
---|---|
ES6/Typescript에서 화살표 함수와 함께 _(밑줄) 변수 사용 (0) | 2023.04.06 |
Word press 메뉴 링크에 클래스 추가 (0) | 2023.04.06 |
Swift Codable에서 속성을 제외하려면 어떻게 해야 합니까? (0) | 2023.04.06 |
Oracle 고유 제약 조건 및 고유 인덱스 (0) | 2023.04.06 |