Узнайте, существует ли Переменная

Я хотел бы узнать, существует ли переменная JavaScript. Это - то, что я имею до сих пор, который был починен от различных форумов:

function valueOfVar(foo){

    var has_foo = typeof foo != 'undefined';

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

}

Отметьте, я хочу передать в строке как нечто. Пример: valueOfVar (box_split [0] + '_2')

Теперь, я не думаю, что это работает, потому что это возвращает true, когда определенные переменные даже не существуют. На самом деле это, кажется, возвращает true все время.

Реализация JQuery, которая работы также были бы большими, поскольку я использую это.

Спасибо все для любой справки

6
задан Abs 20 February 2010 в 22:52
поделиться

3 ответа

Вы что-то имеете в виду как это?

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

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

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

Если вы хотите иметь возможность обрабатывать локальные переменные, вам придется сделать что-нибудь довольно странное, например:

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
6
ответ дан 17 December 2019 в 00:08
поделиться

Проблема с вашим тестом valueOfVar (box_split [0] + '_ 2') в том, что вы добавляете строку к неопределенному атрибуту. Вы всегда будете передавать строку в valueOfVar () со значением 'undefined_2' .

Вы заметите, что оператор typeof вернет 'string' , если вы попробуете следующее:

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

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

Оператор typeof будет работать для этих типов тестов, но вы не можете ничего добавить к неопределенной переменной, иначе тест всегда будет истинным:

if (typeof foo === 'undefined') {
  // foo does not exist
}
else {
  // it does
}
1
ответ дан 17 December 2019 в 00:08
поделиться

Не уверен, что это решит вашу проблему, но в JavaScript null - это не то же самое, что undefined. Написанный вами код подходит для тестирования, если переменная не определена. IE:

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

Между прочим, тип null - это «объект».

0
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: