Почему функция не видит переменную?

Ссылка скопирована
1 ответ

Снизу часть кода, который должен парсить сообщения с телеграмм канала, но он почему-то не видит переменную i,

for(let i = 2; i<=19; i++) {         let arr = await page.evaluate(() => {             let text = document.querySelector(`body > main > div > section > div:nth-child(${i})`).innerText             return text         })         console.log(arr)     }

for(let i = 2; i<=19; i++) { let arr = await page.evaluate(() => { let text = document.querySelector(`body > main > div > section > div:nth-child(${i})`).innerText return text }) console.log(arr) }

Вот ошибка:
Error [ReferenceError]: i is not defined

Дополнительно:

скорее всего это происходит потому что сам цикл не является асинхронным, и он не ждет выполнения await. Нужен рефакторинг.

  • Kentavr16, Поможете?
  • Kentavr16, причём здесь асинхронность?

    r_e_n_y, насколько ты уверен в том, что ошибка именно в данном куске кода?

  • WbICHA, 100%
  • WbICHA, Щас скину весь код
  • r_e_n_y, стоп, это же пупитир, причём здесь телега тогда? Естественно там уже, скажем так, свои праивла.
  • Проблема в том, что переменная i из цикла for не видна внутри page.evaluate(). Чтобы это исправить, передайте i как аргумент в page.evaluate(), например:

    for(let i = 2; i <= 19; i++) {     let arr = await page.evaluate((index) => {         let text = document.querySelector(`body > main > div > section > div:nth-child(${index})`).innerText;         return text;     }, i);      console.log(arr); }

    for(let i = 2; i <= 19; i++) { let arr = await page.evaluate((index) => { let text = document.querySelector(`body > main > div > section > div:nth-child(${index})`).innerText; return text; }, i); console.log(arr); }

    • Спасибо
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Кирилл JS Ответ

    Проблема, когда функция не видит переменную, может возникать по разным причинам. Вот несколько возможных причин и способы их решения:

    1. Область видимости переменной: В PHP существует концепция области видимости переменных. Если переменная объявлена вне функции, она не будет видна внутри функции, если не передать ее как аргумент функции или не использовать global ключевое слово. Вот пример:

    $variable = "Hello";
     
    function myFunction() {
        echo $variable; // Ошибка: переменная $variable не видна внутри функции
    }
     
    myFunction();

    $variable = "Hello"; function myFunction() { echo $variable; // Ошибка: переменная $variable не видна внутри функции } myFunction();

    Для исправления этой проблемы можно передать переменную как аргумент функции:

    $variable = "Hello";
     
    function myFunction($var) {
        echo $var; // Выведет "Hello"
    }
     
    myFunction($variable);

    $variable = "Hello"; function myFunction($var) { echo $var; // Выведет "Hello" } myFunction($variable);

    2. Использование global: Если переменная должна быть доступна внутри функции, можно использовать ключевое слово global:

    $variable = "Hello";
     
    function myFunction() {
        global $variable;
        echo $variable; // Выведет "Hello"
    }
     
    myFunction();

    $variable = "Hello"; function myFunction() { global $variable; echo $variable; // Выведет "Hello" } myFunction();

    3. Ошибки при передаче параметров: Иногда проблема может быть связана с неправильной передачей параметров в функцию. Убедитесь, что правильные аргументы передаются в функцию:

    function myFunction($var) {
        echo $var;
    }
     
    $variable = "Hello";
    myFunction($variable); // Выведет "Hello"

    function myFunction($var) { echo $var; } $variable = "Hello"; myFunction($variable); // Выведет "Hello"

    4. Использование статических переменных: Если вы используете статические переменные в функции, убедитесь, что они объявлены правильно:

    function myFunction() {
        static $count = 0;
        $count++;
        echo $count;
    }
     
    myFunction(); // Выведет "1"
    myFunction(); // Выведет "2"

    function myFunction() { static $count = 0; $count++; echo $count; } myFunction(); // Выведет "1" myFunction(); // Выведет "2"

    Надеюсь, что эти советы помогут вам решить проблему, когда функция не видит переменную в PHP.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно