Проверка переменных в JS или аналог isset в PHP
В JavaScript часто приходится проверять существование вложенных свойств:
js
if (
typeof window.var1 !== "undefined" &&
typeof window.var1.var2 !== "undefined" &&
typeof window.var1.var2.var3 !== "undefined"
) {
// code
}Выглядит некрасиво. Хочется что‑то вроде isset() из PHP.
Функция isset для JS
js
function isset(base, variable) {
var isset = false;
var path;
if (typeof base !== "undefined" && typeof variable !== "undefined") {
path = variable.split(".");
if (path.length) {
for (var i in path) {
if (path.hasOwnProperty(i)) {
if (typeof base[path[i]] === "undefined") {
console.log("undefined " + path[i]);
return false;
} else {
base = base[path[i]];
}
}
}
isset = true;
}
}
return isset;
}Теперь длинное условие можно заменить одной проверкой:
js
if (isset(window, "var1.var2.var3")) {
// code
}Функция:
- принимает базовый объект (
base, напримерwindow); - принимает строку‑путь (
"var1.var2.var3"); - последовательно проходит по свойствам, возвращая
true, только если все уровни определены.