Идеальный способ использования цикла for в узле - PullRequest
0 голосов
/ 16 октября 2018

Я написал очень маленький скрипт в node.js, чтобы проверить, как ссылки могут быть переданы в функцию с помощью цикла.

Я мог видеть, что могу сделать то же самое двумя способами, но не могу понять, какой путь мне следует придерживаться, то есть какой из них идеален и почему?

Один путь: for (link in links) {}

var request = require('request');
var links = ['https://stackoverflow.com/questions/ask', 'https://github.com/request/request'];
for (link in links) {
    (function(url) {
        request(url, function() {
            console.log(url);
        });
    })(links[link]);
}

Другой путь: for (const link of links) {}

var request = require('request');
var links = ['https://stackoverflow.com/questions/ask', 'https://github.com/request/request'];
for (const link of links) {
    (function(url) {
        request(url, function() {
            console.log(url);
        });
    })(link);
}

1 Ответ

0 голосов
/ 16 октября 2018

Не существует идеального или хотя бы универсального идеального способа сделать это, поэтому я укажу на разницу между этими двумя.

В первом цикле for вы итерируете массив как объект (вмассив javascript - это объект, который может перемещаться с помощью индексов).Но создаст глобальную переменную с именем link после выполнения.Таким образом, создается нежелательная переменная и место в памяти.

Попробуйте console.log(link) после выполнения.

Второй цикл for представлен в скрипте ECMA 6 и не создает глобальную переменную и являетсярекомендуемые.Из-за читабельности и большего контроля над вашими данными, и ссылку можно определить как const, если хотите.Так что он не будет изменен внутри цикла.

Для node.js Полагаю, второй может быть идеальным для большинства сценариев.Но в javascript первое может быть выше с точки зрения производительности, если вы компилируете его из ES6 в ES5, и это относится к большинству сценариев.

...