2010-02-20 3 views
6

자바 변수가 있는지 알고 싶습니다. 이것은 내가 지금까지 다른 포럼에서 함께 자갈길 된이있는 것입니다 :주의변수가 있는지 알아보십시오

function valueOfVar(foo){ 

    var has_foo = typeof foo != 'undefined'; 

    if(has_foo){ 
     alert('1 = true'); 
     return true; 
    } 
    else { 
     alert('1 = false'); 
     return false; 
    } 

} 

, 내가 foo는 같은 문자열을 전달하고 싶습니다. 예 : valueOfVar 이제

을 (box_split [0] + '2 _')는, 나는 특정 변수도 존재하지 않는 경우는 true를 반환하기 때문에이 작품 생각하지 않습니다. 사실, 그것은 항상 진실로 돌아 간다.

이 기능을 사용하면 작동하는 JQuery 구현도 훌륭합니다. 모든 valueOfVar(box_split[0]+'_2') 시험에 도움이

답변

6

이 같은 것을 의미합니까? 로컬 변수를 처리 할 수있게하려면

function variableDefined (name) { 
    return typeof this[name] !== 'undefined'; 
} 

console.log(variableDefined('fred')); 
// Logs "false" 

var fred = 10; 
console.log(variableDefined('fred')); 
// Logs "true" 

이 같은 아주 이상한 뭔가를해야 할 것이다 :

이 문제를 해결하지만, 자바 스크립트, NULL의 경우
function variableDefined2 (value) { 
    return typeof value !== 'undefined'; 
} 

function test() { 
    var name = 'alice' 
    console.log(variableDefined2(eval(name))); 
    var alice = 11; 
    console.log(variableDefined2(eval(name))); 
} 

test(); 
// Logs false, true 
+0

모든 경우에 여전히 true를 반환합니다! – Abs

+0

Chrome의 Javascript 콘솔에서 테스트 할 때 그렇지 않습니다. 어떻게 테스트하고 있습니까? – Rich

+0

네, 효과가있었습니다! 환상적! 실수는 단지 이름을 foo로 변경하지 않았다는 것입니다 ... 내가 사용했던 변수. 리치 감사합니다. :) – Abs

1

문제에 대한

덕분에 당신이 정의되지 않은 속성에 문자열을 추가하는 것입니다. 항상 문자열을 valueOfVar()에 전달하고 값은 'undefined_2'입니다.

당신은 다음과 같은 시도 할 경우 typeof 운영자가 'string'를 반환합니다 것을 알 수 :

function valueOfVar(foo){ 
    alert(typeof foo); 
} 

valueOfVar(box_split[0]+'_2'); 

typeof 운영자가 테스트 이러한 종류의 작동,하지만 당신은 정의되지 않은 변수에 아무것도 추가 할 수 없습니다 그렇지 않으면 항상 true로 테스트합니다.

if (typeof foo === 'undefined') { 
    // foo does not exist 
} 
else { 
    // it does 
} 
+0

box_split [0]이 정의되었습니다. 왜 그것이 정의되지 않았다고 생각 했습니까? 값은 "chk"입니다. – Abs

0

확실하지 않음 정의되지 않은 것과 같은 것이 아닙니다. 작성한 코드는 변수가 정의되지 않은 경우 테스트하기에 적합합니다. IE :

<script> 
window.onload = function() 
{ 
    alert(typeof(abcd) == "undefined"); //true 
    abcd = null; 
    alert(typeof(abcd) == "undefined"); //false 
}; 
</script> 

그런데 null 유형은 "object"입니다.

관련 문제