воскресенье, 4 августа 2019 г.

A programmer: JavaScript #13


Сегодня речь о нескольких нюансах, которые знатокам покажутся очевидными, но у меня вызвали затруднения в последние дни.

1.
Когда мы экспортируем модуль, экспортируется не функция, а объект:
module.exports = { message: message }

то есть когда мы хотим вызвать функцию message из этого модуля, надо писать не message();, а message.message();.

Разумеется, предполагается, что модуль импортирован:
var message = require('./module.js');

2.
В других языках ответ на этот вопрос находился быстро, а тут пришлось поискать, как сравнить два объекта (а не значения переменных). Ответ вот:
Object.is(value1, value2);

3.
Ну и по мелочи - проверять все мелочи. Например, не путать атрибуты html-формы "id" и "name". Или не забывать про urlencodedParser, когда пишешь обработчик для POST-метода (а то у меня был шок, когда body вообще не обнаруживалось). Или просто уточнять синтаксис.


2 комментария:

Unknown комментирует...

бы не писать message.message(), да и вообще не обращаться к импортированным переменным через через точку, пользуются деструктуризацией:
const [message, otherMethod, otherVar] = require('./module.js')

Oleksiy Musiyezdov комментирует...

Спасибо!