Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Почему моя функция работает в NodeJS но не работает в JS бравзера (https://javascript.ru/forum/node-js-io-js/84858-pochemu-moya-funkciya-rabotaet-v-nodejs-no-ne-rabotaet-v-js-bravzera.html)

andriy159 18.01.2023 18:20

Почему моя функция работает в NodeJS но не работает в JS бравзера
 
function is(e){return typeof e=='undefined'?false:true}

Идея в том, чтоб удобней и сжато проверять 'undefined', ведь синтаксис JS хорош в первую очередь для сжатия и полезен для небольшого трафика

Если вызвать is(ddddd) в NodeJS, то функция вернет результат false, что будет значить, что переменной не существует. Но бравзер вернет ошибку до входа в функцию. Это нельзя пофиксить?

Aetae 18.01.2023 18:26

Нельзя. Если переменная не объявлена - она не объявлена. Не объявленную переменную нельзя использовать. Схрена ли оно вообще работает у тебя в ноде - непонятно: у меня например падает как и должно:
node -e "function is(e){return typeof e=='undefined'?false:true} console.log(is(ddddd))"

andriy159 18.01.2023 20:00

Да, действительно верно... Я по другому делал. Забыл.

d={}
is(d.s) - работает
is(d.s.s) - не работает

Все понятно теперь. Спасибо

Aetae 18.01.2023 21:28

andriy159, если работаешь с объектами удобная проверка на null\undefined - optional chaining:
const foo = {};
const maybe = foo?.a?.b?.c?.d;
if (!maybe) return;

andriy159 18.01.2023 23:15

Спасибо!


Часовой пояс GMT +3, время: 09:54.