GOOGLE ADS

суббота, 30 апреля 2022 г.

параметр объявлен, но его значение никогда не читается... почему бы и нет

Чтобы отправить электронное письмо, у меня есть метод контроллера как таковой:

const send = function (subject, template, to, options) {
// VSC says about "subject": is declared but its value is never read.
// VSC does not say this for the other three parameters.
return new Promise(function (resolve, reject) {
fs.readFile(template, "utf8", function (err, templateContent) {
if (err) {
return resolve(false);
}
var subject = subject;
console.log(subject);
// this is where I do read "subject" but it returns 'undefined'
// (even though I am passing the function a value for the parameter)
... etc

Что я делаю не так? На мой взгляд, я объявил параметр subjectи позже использую его в методе контроллера.


Решение проблемы

var subject = subject;

var subjectсоздает новую переменную, названную subjectв области действия функции обратного вызова, переданной в readFile.

Это затеняет переменную subject, созданную как имя параметра для функции, назначенной send.

var subject = subject;поэтому копирует значение локального subject(которое undefinedв данный момент) в subject(которое ничего не делает).

Дайте вашим переменным разные имена, даже если они делают похожие вещи.

Я рекомендую использовать линтер, который может применять такое правило, как no-shadow (похоже, вы уже используете его — VS Code не будет генерировать сообщение об ошибке, а только сообщит об этом из инструмента, который это делает — поэтому убедитесь, что вы включили это правило для этого инструмента).

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...