В настоящее время изучаете «Что такое Закрытие» и попробуйте этот практический код. Запуск в Visual Studio code .
for (let [idx,btn] of buttons.entries()) {
btn.addEventListener(
"click",
function onClick(){
console.log(
`Clicked on button (${ idx })!
`);
}
);
}
Ожидается, что для каждой итерации будут получены новые переменные в области блока (idx, btn); и ожидал, что l oop также создает новую внутреннюю функцию onClick (..) каждый раз. Но он получил эту ошибку.
PS C:\Users\leePC\babel\public\src> node test.js
C:\Users\leePC\babel\public\src\test.js:1
for (let [idx,btn] of buttons.entries()) {
btn.addEventListener("click",function onClick(){
console.log(`Clicked on button (${ idx })!`); }); }
^
ReferenceError: buttons is not defined
at Object.<anonymous>
(C:\Users\leePC\babel\public\src\test.js:1:31)
at Module._compile
(internal/modules/cjs/loader.js:1157:30)
at Object.Module._extensions..js
(internal/modules/cjs/loader.js:1177:10)
at Module.load (internal/modules/cjs/loader.js:1001:32)
at Function.Module._load
(internal/modules/cjs/loader.js:900:14)
at Function.executeUserEntryPoint [as runMain]
(internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47
Поскольку некоторые люди говорили, что я должен реализовать
npm install react-uikit-button --save;
// ES6
import Button from 'react-uikit-button';
// ES5
var Button = require('react-uikit-button');
И попробуйте импортировать перед кодом, но он все равно не работает. Появляется другая ошибка ... Как это исправить?
edit: когда я использую оператор import и затем конвертирую этот код Babel, эта ошибка возникает (в коде Visual Studio)
'Button' is declared but its value is never read