변수 === 정의되지 않은 변수 대 변수 유형 === "변수"
jQuery Core Style Guidelines에서는 변수가 정의되어 있는지 여부를 확인하는 두 가지 방법을 제안합니다.
- 변수: " " " " :
typeof variable === "undefined"
- 변수: " " " " :
variable === undefined
- 성::
object.prop === undefined
jQuery는 글로벌 변수에 대해 하나의 접근 방식을 사용하고 로컬 및 특성에 대해 다른 접근 방식을 사용하는 이유는 무엇입니까?
되지 않은 변수의 경우 " " " 입니다.typeof foo
리터럴을 합니다."undefined"
체크는 "", """ 입니다.foo === undefined
"foo is not defined" 오류가 발생합니다.
로컬 변수(어디선가 선언되어 있는 것을 알고 있는)의 경우, 이러한 에러는 발생하지 않기 때문에, ID 체크가 실시됩니다.
난 계속 사용할 거야typeof foo === "undefined"
수 없다.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
가 두 다른 는 jQuery가 만의 jQuery를 합니다.undefined
, 즉 jQuery 함수 의 변수.undefined
외부로부터의 조작으로부터 안전합니다. 두 한 사람이 만, 이 두 가지 접근방식은 어느 .foo === undefined
더 빠르다고 판단했기 때문에 그렇게 하기로 결정했어요.[UPDATE: 코멘트에 기재된 바와 같이 와의 비교도 약간 짧기 때문에 참고가 될 수 있습니다.]그러나 실제 상황에서 얻는 이득은 완전히 미미합니다. 이 체크는 결코 어떤 종류의 병목도 되지 않습니다.그리고 당신이 잃는 것은 매우 중요합니다: 비교를 위해 호스트 객체의 속성을 평가하는 것은 오류를 발생시킬 수 있습니다.typeof
수표는 절대 안 돼
예를 들어, IE 에서는 XML 의 해석에 다음과 같이 사용됩니다.
var x = new ActiveXObject("Microsoft.XMLDOM");
a a a a a a a a a to to 가 있는지 loadXML
다음 중 하나:
typeof x.loadXML === "undefined"; // Returns false
한편, 다음과 같습니다.
x.loadXML === undefined; // Throws an error
갱신하다
의 또 다른 typeof
않은 되지 않은 변수,즉되지 않은 입니다.foo === undefined
않고,.그리고 실제로는ReferenceError
@Linus Kleen lin @Linus Kleen 。예를 들어 다음과 같습니다.
typeof someUndeclaredVariable; // "undefined"
someUndeclaredVariable === undefined; // throws a ReferenceError
": "를 합니다.typeof
disclossible을 클릭합니다.
변수 또는 바로 '변수 종류'입니다.undefined
를 재정의할 수 있습니다.
undefined = "foo";
var variable = "foo";
if (variable === undefined)
console.log("eh, what?!");
의 typeof variable
하다.
업데이트: 이는 ES5에서는 글로벌하지 않습니다.undefined
입니다.
1의 값 15.1.1
[...]
3 15.1.1.3 " "
「」의 값undefined
8.1번.
[ ] ) 、 、 [ ] 、 false { [ Writable ] 、 false 、 [ Enumerable ] 、 false 、 [ Configurable ] 、 false } 。
그러나 로컬 변수에 의해 그림자가 그려질 수 있습니다.
(function() {
var undefined = "foo";
var variable = "foo";
if (variable === undefined)
console.log("eh, what?!");
})()
또는 파라미터:
(function(undefined) {
var variable = "foo";
if (variable === undefined)
console.log("eh, what?!");
})("foo")
★★★★★★★★★★★★★★★★★★undefined
선언되는 것은 는 "jQuery"를 선언합니다.undefined
그 주된 기능에서. 그들은 금고를 한다.undefined
값을 매겨도 외부에서는 을 매겨 합니다.typeof
안전할 수 있는 스타일.
★★★★★★★★★★★★★★★★★★★★★★★★★★의 퍼포먼스 향상에 관심이 있는 사람variable === undefined
를 참조할 수 있습니다만, 크롬의 최적화 뿐인 것 같습니다.
- http://jsperf.com/type-of-undefined-vs-undefined/30
- http://jsperf.com/type-of-undefined-vs-undefined
변수의 , 은 '아까', '아까', '아까', '아까'localVar === undefined
로컬 범위 내 어딘가에 정의되어 있을 필요가 있기 때문에 동작합니다.그렇지 않으면 로컬로 간주되지 않습니다.
및되어 있지 않은 과 같습니다.someVar === undefined
예외가 발생합니다.수집되지 않은 참조 오류: j가 정의되지 않았습니다.
위의 내용을 명확히 하는 몇 가지 코드가 있습니다.보다 명확한 설명을 위해 인라인 코멘트에 주의해 주십시오.
function f (x) {
if (x === undefined) console.log('x is undefined [x === undefined].');
else console.log('x is not undefined [x === undefined.]');
if (typeof(x) === 'undefined') console.log('x is undefined [typeof(x) === \'undefined\'].');
else console.log('x is not undefined [typeof(x) === \'undefined\'].');
// This will throw exception because what the hell is j? It is nowhere to be found.
try
{
if (j === undefined) console.log('j is undefined [j === undefined].');
else console.log('j is not undefined [j === undefined].');
}
catch(e){console.log('Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.');}
// However this will not throw exception
if (typeof j === 'undefined') console.log('j is undefined (typeof(x) === \'undefined\'). We can use this check even though j is nowhere to be found in our source code and it will not throw.');
else console.log('j is not undefined [typeof(x) === \'undefined\'].');
};
위의 코드를 다음과 같이 호출하면:
f();
출력은 다음과 같습니다.
x is undefined [x === undefined].
x is undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
위의 코드를 다음과 같이 호출하는 경우(실제로 임의의 값을 사용하여):
f(null);
f(1);
출력은 다음과 같습니다.
x is not undefined [x === undefined].
x is not undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
때 : 음음 、 음다 、 다 when 、 。typeof x === 'undefined'
기본적으로 다음과 같은 질문을 합니다.소스코드 어딘가에 변수가 존재하는지(정의되어 있는지) 확인해 주세요.(다소)C# 또는 Java를 알고 있는 경우 이러한 유형의 체크는 컴파일되지 않기 때문에 수행되지 않습니다.
요약:.
이 "True"인 .undefined
:
var globalVar1;
// This variable is declared, but not defined and thus has the value undefined
console.log(globalVar1 === undefined);
// This variable is not declared and thus will throw a referenceError
console.log(globalVar2 === undefined);
글로벌 범위에서는 변수가 선언되었는지 100% 확신할 수 없기 때문에 referenceError가 발생할 수 있습니다.하는 typeof
되지 않은 이 : unknown variable의 경우 unknown variable의 경우 operator on unknown variable이 됩니다.
var globalVar1;
console.log(typeof globalVar1 === 'undefined');
console.log(typeof globalVar2 === 'undefined');
는 것, 유, 유, 유, 유, this, this, this, this, this, this, this, .typeof
"을 합니다.undefined
가 현재 하고 있는 undefined
그게 바로 우리가 원하는 거야
- 로컬 변수에서는 이 변수가 존재할 것을 미리 알고 있기 때문에 이 문제는 발생하지 않습니다.변수가 존재하는 경우 해당 함수를 간단히 살펴볼 수 있습니다.
- 이 하지 않습니다.
undefined
var obj = {};
console.log(obj.myProp === undefined);
typeof a === 'undefined'
빠르다a === 'undefined'
v6.9.약입니다.
언급URL : https://stackoverflow.com/questions/4725603/variable-undefined-vs-typeof-variable-undefined
'source' 카테고리의 다른 글
Django에서 날짜 범위별로 쿼리 개체를 필터링하려면 어떻게 해야 합니까? (0) | 2022.12.25 |
---|---|
3306 이외의 포트를 사용하도록 mariadb docker-compose 파일을 설정하려면 어떻게 해야 합니까? (0) | 2022.12.25 |
SQL 쿼리 문자열을 자리 표시자로 바꾸기 (0) | 2022.12.25 |
코드 저장소를 사용할 때 리소스의 상대 경로를 참조하는 방법 (0) | 2022.12.25 |
JQuery .each()의 역방향 (0) | 2022.12.25 |