Size: a a a

JavaScript — русскоговорящее сообщество

2020 February 10

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Znacovean Simion
return делает выход функции а мне нужен выход из локальной области видимости
ну просто прибинди методы куда надо... или через call/apply вызывай. ещё стрелочные функции контекст за собой не тянут.
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Konstantin Sedykh
ну просто прибинди методы куда надо... или через call/apply вызывай. ещё стрелочные функции контекст за собой не тянут.
у меня нету методов
у меня просто небольшой код который я не хочу выносить в ещё одну функцию-абстракцию
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
потому я его определил в локальной области видимости { .. }
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
можно конечно определить константу со стрелочной функцией и ниже после объявления вызвать..
но
1 - функция не чистая и основана на сайд-эффектах
да там будет работать ретурн
2 - зачем тогда придуманы локальные области видимости? если из них нельзя выйти продолжив выполнение кода
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Znacovean Simion
можно конечно определить константу со стрелочной функцией и ниже после объявления вызвать..
но
1 - функция не чистая и основана на сайд-эффектах
да там будет работать ретурн
2 - зачем тогда придуманы локальные области видимости? если из них нельзя выйти продолжив выполнение кода
только хотел предложить... 🙂
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
можно и IIFE стрелочную такто)
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Znacovean Simion
можно конечно определить константу со стрелочной функцией и ниже после объявления вызвать..
но
1 - функция не чистая и основана на сайд-эффектах
да там будет работать ретурн
2 - зачем тогда придуманы локальные области видимости? если из них нельзя выйти продолжив выполнение кода
как минимум, что-бы изолировать  внутренние методы и пропсы функций.
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
то есть везде юзают метод или iife когда нужна локальная область видимости и никогда почти не юзают { .. } ?
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Znacovean Simion
то есть везде юзают метод или iife когда нужна локальная область видимости и никогда почти не юзают { .. } ?
ну лично я вообще редко встречал пока именно отдельные блоки {...}. только в примерах по let/const если что. а вот iife сплошь и рядом.
источник

ДВ

Данил Васильевич in JavaScript — русскоговорящее сообщество
Znacovean Simion
return делает выход функции а мне нужен выход из локальной области видимости
do { } while (false); внутри использовать continue
источник

ДВ

Данил Васильевич in JavaScript — русскоговорящее сообщество
Znacovean Simion
всем привет
вопрос по локальной области видимости объявленой внутри функции (вопрос в комментарии внутри кода)

const someFunct = function(res) {
// тут начало локальной области видимости
{

 const x = some;
 if(!x) // что тут написать чтоб продолжить выполнять код за пределами области видимости?

}

// тут остальной код
return res;
}
ну как то так
const someFunct = function(res) {
  let some = 2;
  {  
   do {
     const x = some;
     if(x==5){
       res -= x;
       break;
     }
     if(x==3){
       res += x;
       continue;
     }
   } while (false);
 }
 return res;
};
console.log(someFunct(8));
выполнятся все условия и вернется res
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Данил Васильевич
ну как то так
const someFunct = function(res) {
  let some = 2;
  {  
   do {
     const x = some;
     if(x==5){
       res -= x;
       break;
     }
     if(x==3){
       res += x;
       continue;
     }
   } while (false);
 }
 return res;
};
console.log(someFunct(8));
выполнятся все условия и вернется res
крутяк) спасибо)
но раз мы юзаем do там уже есть локальная область и нашу можно опустить
источник

ДВ

Данил Васильевич in JavaScript — русскоговорящее сообщество
Znacovean Simion
крутяк) спасибо)
но раз мы юзаем do там уже есть локальная область и нашу можно опустить
по сути да.
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
while (false)

в таком разе do while выполнится как минимум 1 раз)
юзаем по назначению прям)
интересное решение)

надо б чтоб на собеседовании подобное задать)
источник

ДВ

Данил Васильевич in JavaScript — русскоговорящее сообщество
Znacovean Simion
while (false)

в таком разе do while выполнится как минимум 1 раз)
юзаем по назначению прям)
интересное решение)

надо б чтоб на собеседовании подобное задать)
😉 пользуйтесь, только давайте новичкам шанс на собеседование.
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Данил Васильевич
😉 пользуйтесь, только давайте новичкам шанс на собеседование.
😀 новичек пройдёт если iife приведет как пример решения)
источник

ДВ

Данил Васильевич in JavaScript — русскоговорящее сообщество
Znacovean Simion
😀 новичек пройдёт если iife приведет как пример решения)
а если switch ? и goto ? предложит
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Данил Васильевич
ну как то так
const someFunct = function(res) {
  let some = 2;
  {  
   do {
     const x = some;
     if(x==5){
       res -= x;
       break;
     }
     if(x==3){
       res += x;
       continue;
     }
   } while (false);
 }
 return res;
};
console.log(someFunct(8));
выполнятся все условия и вернется res
можно ещё проще 🙂:
const someFunct = function(res) {
  let x = 2;
   return do {
     if(x==5){
       res - x;
     }
     if(x==3){
       res + x;
    }
  }
};
console.log(someFunct(8));
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Данил Васильевич
а если switch ? и goto ? предложит
по сути интересен любой подход который не выглядит как магия
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Konstantin Sedykh
можно ещё проще 🙂:
const someFunct = function(res) {
  let x = 2;
   return do {
     if(x==5){
       res - x;
     }
     if(x==3){
       res + x;
    }
  }
};
console.log(someFunct(8));
нельзя
задача исполнять код после локальной области видимости без определения лишних переменных
источник