ESlint правило, которое обнаруживает, что переменная и функция имеют одинаковое имя в Javascript? - PullRequest
0 голосов
/ 13 октября 2019

Я случайно назвал переменную так же, как функцию в Node.js. Это не очень хорошо, Node 10 не понравилось. И так как это была подключаемая функция (не вызываемая из пользовательского интерфейса приложения), прошло некоторое время, прежде чем я обнаружил, что пошло не так.

Существует ли какое-либо правило ESLint, которое может обнаруживать ошибки такого типа? Это в Firebase, и ESLint запускается во время развертывания на рабочем сервере.

Фактическое конфликтующее использование имени переменной было в том же блоке, что-то вроде этого: const a = a(x).

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Существует правило no-redeclare , которое вы можете установить в ESLint , которое сообщает вам проблемную строку в вашем коде.

/*eslint no-redeclare: "error"*/

function a() {}
const a = a();

=> 4:5  error  'a' is already defined  no-redeclare

Также ESLint выдаст ошибку с стандартной конфигурацией.

function a() {}
var a = a();

=> 4:5  error  Parsing error: Identifier 'a' has already been declared

Конечно, с const вы также получите синтаксическую ошибку со строкой, если выпопробуйте запустить ваш скрипт.

1 голос
/ 13 октября 2019

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

function a() {

}

.. . в основном эквивалентно:

var a = function () {

};

Кроме того, значение a в этом примере может быть переназначено позже.

Линтер может помочь вам, и может быть некоторая помощь внекоторые IDE, но они не будут точно знать намерения программиста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...