Цель состоит в том, что если переменная объявлена без назначения, ее можно назначить напрямую;
Если не объявлено, повторно поместите его.
Я искал онлайн и обнаружил, что общий метод - if (typeof (a) == 'undefined') {var a = 'ss';},
Тем не менее, этот метод вернет истину для не вырезренных или неназначенных переменных. И если так:
Кода -копия выглядит следующим образом:
var a;
функция f () {
if (typeof (a) == 'undefined')
{var a = 1;}
}
f ();
console.log (a);
Неопределенный будет отображаться, потому что f () просто объявляет локальную переменную с тем же именем.
Однако, если это переменная, которая была объявлена без назначения: если (novaluev == null), она вернет true;
Необладаемая переменная: if (nodeclarev == null), будет сообщена ошибка.
Так что это может быть:
Кода -копия выглядит следующим образом:
функция f () {
if (typeof (v) == 'undefined') {
пытаться{
if (v == null) // Укажите, что v объявлено незнашиваемым
v = 1; // Если V является глобальной переменной, она не изменит свою область
}
Catch (err) {// Укажите, что V не объявлено
var v; v = 2;
}
}
console.log (v);
}
f ();
Это также неправильно, потому что JS обладает характеристикой «объявления аванса», то есть переменных, объявленных в функции, видны в этой функции и в подфункции этой функции, независимо от того, где она объявлена в функции.
Таким образом, из -за вышеуказанного VAR V;, в любом случае, вы только пытаетесь.
Изменить это:
Кода -копия выглядит следующим образом:
функция f () {
if (typeof (v) == 'undefined') {
пытаться{
if (v == null) // Укажите, что v объявлено незнашиваемым
v = 1; // Если V является глобальной переменной, она не изменит свою область
}
Catch (err) {// Укажите, что V не объявлено
eval ('var v'); v = 2; // здесь по -другому
}
}
console.log (v);
}
f ();
Вот и все.
Написано как функция суждения, возвращение «nodeclare» означает, что переменная не объявлена, «новичка» означает, что переменная была объявлена без назначения, а «hasvalue» означает, что переменная была объявлена назначена:
Кода -копия выглядит следующим образом:
функция f (v) {
if (typeof (v) == 'undefined') {
пытаться{
if (v == null)
вернуть «Новалу»;
}
поймать (err) {
вернуть 'nodeclare';
}
}
иначе вернуть 'hasvalue';
}
var a;
console.log (f (a));
a = 0;
console.log (f (a));
console.log (f (b));
Это снова неправильно ..... будет ошибка, когда Console.log (f (b)); ...