Я пишу с помощью Netbeans, чтобы добавлять профессиональные комментарии к каждой функции. Итак, я начинаю каждое из них с, /**
а затем Enter
нажимаю, чтобы позволить Netbeans выполнить схему комментариев по умолчанию для следующей функции.
До сих пор я использовал это только для языка PHP, и в этом случае Netbeans всегда добавлял @returns {type}
часть только в схему комментариев, если следующая функция PHP действительно включала return
оператор. В так называемых «процедурах» (функциях, не возвращающих никакого значения) эта часть отсутствовала.
Сегодня я попробовал то же самое для функции Javascript, и Netbeans добавил @returns {undefined}
часть в схему комментариев, хотя следующая функция ничего не возвращает.
Это меня смутило. Предлагает ли Netbeans такой способ, что каждая функция Javascript должна что-либо возвращать? Что я должен делать? Игнорировать (или удалить) эту часть схемы комментариев или следовать предложению (если это вообще предложение) и добавить return false;
в конец такой функции, хотя для меня это бесполезно?
источник
undefined
. Во многих языках возвращается результат последнего оператора (более полезно, IMO). Это называется неявным возвратом .Ответы:
Краткий ответ: нет.
Реальный ответ да: двигатель JS должен быть уведомлен , что некоторая функция завершила свою работу, которая осуществляется с помощью функции , возвращающей что - то. По этой же причине вместо «завершена» функция называется «вернулась» .
Функция, в которой отсутствует явный оператор возврата
undefined
, вернется , как сказано, что функция C (++), не имеющая возвращаемого значения (и ее подпись отражает это), должна вернутьvoid
:Кроме того, в JS, как и в большинстве других языков, вы можете просто игнорировать возвращаемое значение функции, что выполняется очень часто:
На каком-то очень низком уровне отдача переводится в какой-то прыжок. Если бы функция действительно вообще ничего не возвращала , не было бы возможности узнать, что и когда вызывать следующую функцию, или вызывать обработчики событий и т.п.
Итак, резюмируем: нет, JS-функция не должна ничего возвращать в вашем коде. Но что касается движков JS: функция всегда что-то возвращает, будь то явно через
return
оператор или неявно. Если функция возвращается неявно, ее возвращаемое значение всегда будет неопределенным.источник
void
, он ничего не возвращает, но его подпись отражает это черезvoid
тип возвращаемого значения.return;
, вероятно, полезен только в том случае, если вам нужно вернуться раньше. записьreturn undefined;
может привести к другим результатам, еслиundefined
разрешит другое значение. Большинство (если не все) браузеры выдают ошибку при попытке переназначить undefined, но теоретически это возможно, вот пример с использованием node.jsvoid
другие языки (например, C), где у вас могут быть такие функцииvoid do_someting(int *arg)
, но у вас не может быть переменной с типомvoid
. В Cvoid
это на самом деле не тип, поэтому эти функции ничего не возвращают , они просто прыгаютНет, возвращать не нужно.
Но нет возврата на самом деле вернуть
undefined
источник
Нет, не делают. Верно, что глубоко в спецификации все они немного отличаются:
... но результат вызова каждого из них одно и то же:
undefined
. Итак, с прагматической точки зрения:return
, вы можете просто позволить выполнению кода «упасть с конца» функции.undefined
, в частности, просто напишитеreturn;
return;
или закончилосьreturn undefined;
; все они выглядят одинаково в вашем коде вызоваОтноситесь к спецификации: в частности, когда выполнение функции прекращается, в спецификации это "нормальное" завершение; но
return;
иreturn value;
оба "возвращают" завершения со связанным значением (undefined
), которое (хоть немного) отличается. Но разница устраняется семантикой вызова функции , которая гласит:Таким образом, в коде нет никакой разницы.
источник
Нет, вам не нужно возвращать что-то для каждой функции. Это необязательно и зависит от того, как вы пишете логику кода.
источник