Возвращение функции из функции

72
13 сентября 2021, 17:40

Для чего используется строка return undefined;? Я удалила, но вроде результат компиляции не изменился. И когда actiion равен undefined?

function menu(n){ 
   
    if(n==1) return function(x, y){  
      return x+y; 
      } 
    else if(n==2) return function(x, y){ 
       return x - y; 
       } 
    else if(n==3) return function(x, y){  
      return x * y; 
      } 
    return undefined; 
} 
  
for(var i=1; i < 5; i++){ 
    var action = menu(i); 
    if(action!==undefined){ 
        var result = action(5, 4); 
        console.log(result); 
    } 
}

Answer 1

Функция по умолчанию возвращает undefined, поэтому после удаления последней строки в функции поведение не меняется. Это строка просто дублирует неявное поведение. Можно написать по разному

function a() {}; // вернет undefined
function b() {return}; // тоже вернет undefined
function c() {return undefined}; //опять тоже самое

Касательно второго вопроса: когда ни одно из условий не сработает, в вашем случае это если передали не 1, 2 или 3

Answer 2

Эта строка здесь не нужна. Если функция завершается без исполнения команды return, то результат этой функции - undefined. Смысл return undefined; - показать, что программист не забыл что-то вернуть, а возвращает undefined специально.

READ ALSO
Скрыть таб при повторном клике

Скрыть таб при повторном клике

Решил покопаться с JS без использования jQueryПростая задачка при наличии упомянутой библиотеки, но, все же

85
Несколько фильтров на странице

Несколько фильтров на странице

Есть следующая проблемаНа js работает первый фильтр:

270
Получения списка папок в Node.js

Получения списка папок в Node.js

Необходимо получить список папок в директорииПри использовании fs

106
React возвращает не html, а [object Object]

React возвращает не html, а [object Object]

Почему при нажатии на кнопку возвращает [object Object], а не то, что находится в render компонента UserList? Помогите исправить

203