자바 스크립트에 변수가 있는지 확인
자바 스크립트에서 변수가 존재하고 null (false, empty)이 아닌지 확인하는 두 가지 방법이 있음을 알고 있습니다.
1) if ( typeof variableName !== 'undefined' && variableName )
2) if ( window.variableName )
어느 것이 더 선호되며 그 이유는 무엇입니까?
변수는있다 선언 된 변수 이름에 접근하는 것은 생산하지 않을 경우 ReferenceError
. 표현식 typeof variableName !== 'undefined'
은 다음 false
두 경우 중 하나에 만 해당됩니다.
- 변수가 선언되지 않았 거나 (즉,
var variableName
범위에 없음 ) - 변수가 선언되고 그 값은 다음과 같습니다
undefined
(즉, 변수의 값 이 정의되지 않음 ).
그렇지 않으면 비교는로 평가됩니다 true
.
변수가 선언되지 않았거나 경우에 당신이 정말로 테스트하려는 경우, 당신은해야합니다 catch
모든 ReferenceError
이를 참조하려는 시도에 의해 생산 :
var barIsDeclared = true;
try{ bar; }
catch(e) {
if(e.name == "ReferenceError") {
barIsDeclared = false;
}
}
당신은 단지 테스트하려는 경우 선언 된 변수의 값은 둘 다없는 경우 undefined
도 null
수행 할 수 있습니다 그것을 위해 단순히 시험 :
if (variableName !== undefined && variableName !== null) { ... }
또는 동등하게 엄격하지 않은 동등성 검사를 사용하여 null
:
if (variableName != null) { ... }
두 번째 예제와 작업의 오른쪽 표현식 &&
모두 값이 "거짓"인지, 즉 false
부울 컨텍스트에서 강제 변환되는지 테스트합니다 . 이러한 값은 null
, false
, 0
당신은 폐기 할 수없는 모두하고 빈 문자열을.
'정의되지 않음'은 변수가 보유하기에 완벽하게 유효한 값이라는 점에 유의해야합니다. 변수가 존재하는지 확인하려면
if (window.variableName)
변수가 실제로 정의되었는지 확인하기 때문에보다 완전한 검사입니다. 그러나 이것은 변수가 객체임을 보장하는 경우에만 유용합니다! 또한 다른 사람들이 지적했듯이 variableName의 값이 false, 0, ''또는 null이면 false를 반환 할 수도 있습니다.
즉, 우리는 종종 정의되지 않은 값을 원하지 않기 때문에 일상적인 목적으로는 충분하지 않습니다. 따라서 먼저 변수가 정의되었는지 확인한 다음 Adam이 지적했듯이 변수가 실제로 정의되지 않는 한 undefined를 반환하지 않는 typeof 연산자를 사용하여 정의되지 않은 것이 아니라고 주장해야합니다.
if ( variableName && typeof variableName !== 'undefined' )
변수 (예 : v)가 정의되었고 널이 아닌지 확인하려면 다음을 수행하십시오.
if (typeof v !== 'undefined' && v !== null) {
// Do some operation
}
당신은 모든 falsy 값을 확인하려면 : undefined
, null
, ''
, 0
, false
:
if (v) {
// Do some operation
}
나는 apsillers 로부터 받아 들여진 대답에 대해 충분한 평판을 얻지 못했기 때문에 대답을 작성하고 있습니다. 나는 그의 대답에 동의하지만
변수가 선언되지 않았는지 실제로 테스트하려면 ReferenceError를 잡아야합니다.
유일한 방법은 아닙니다. 다음과 같이 할 수 있습니다.
this.hasOwnProperty("bar")
현재 컨텍스트에 선언 된 변수 막대 가 있는지 확인합니다 . (확실하지 않지만 hasOwnProperty를 호출하는 것이 예외를 발생시키는 것보다 더 빠르고 효율적일 수 있습니다.) 이것은 현재 컨텍스트에서만 작동합니다 (현재 범위 전체가 아님).
if ( typeof variableName !== 'undefined' && variableName )
//// could throw an error if var doesnt exist at all
if ( window.variableName )
//// could be true if var == 0
////further on it depends on what is stored into that var
// if you expect an object to be stored in that var maybe
if ( !!window.variableName )
//could be the right way
best way => see what works for your case
if (variable)
변수가 객체라는 것이 보장되거나 거짓, 0 등이 "기본값"값으로 간주되는 경우 (따라서 정의되지 않은 또는 null과 동일) 사용할 수 있습니다.
typeof variable == 'undefined'
can be used in cases where a specified null has a distinct meaning to an uninitialised variable or property. This check will not throw and error is variable is not declared.
I found this shorter and much better:
if(varName !== (undefined || null)) { //do something }
참고URL : https://stackoverflow.com/questions/16719277/checking-if-a-variable-exists-in-javascript
'developer tip' 카테고리의 다른 글
C #에 List / IEnumerable에 대한 IsNullOrEmpty가 있습니까? (0) | 2020.11.20 |
---|---|
서버에 연결 대화 상자에서 캐시 된 서버 이름을 제거하는 방법은 무엇입니까? (0) | 2020.11.20 |
iOS 7의 콘텐츠에 맞게 UITextView 크기를 어떻게 조정합니까? (0) | 2020.11.20 |
동일한 로거에 대해 두 개의 서로 다른 어 펜더에 두 개의 서로 다른 레벨의 Log4Net 로깅 (0) | 2020.11.20 |
ASP.NET의 서버 측에서 Recaptcha 2 (CAPTCHA reCAPTCHA 없음) 유효성 검사 (0) | 2020.11.19 |