Javascript - как проверить, что переменная не объявлена ​​раньше

Я пытаюсь загрузить изображения с помощью javascript, сначала я получаю URL-адрес изображения большого размера, и когда пользователь откроет моду, я загружу изображения большого размера.

Я пытаюсь сделать это следующим образом

try {
    images
}
catch(err) {
    if (err.name == "ReferenceError"){
        let images = [];
        let nodes = tab.childNodes[1].children;
        for (let i = 0; i < nodes.length; i++) {
            if (nodes[i].firstElementChild.className === "slider") {
                images.push(nodes[i].firstElementChild.src)
            }
        }
        Images:load(images)
    }
}

Но не работает, каждый раз загружает изображения.

Я пытаюсь поместить эти коды внутрь этих операторов if, но ни один из них тоже не сработал, они выдали ошибку Uncaught ReferenceError: images is not defined at HTMLElement.<anonymous>

if (typeof images == 'undefined')

if (typeof images === undefined)

if (typeof images == 'undefined' || images.lenth === 0 )

есть ли способ проверить переменную изображений, не объявленную ранее?

Почему вы не знаете, объявлена ​​ли переменная images?

raina77ow 17.09.2018 14:21

@ raina77ow, если переменная изображений определена, я знаю, что изображения уже загружены, в противном случае я загружу изображения

Teoman Tıngır 17.09.2018 14:23

Первый оператор if не вызывает ошибки

Luca Kiebel 17.09.2018 14:23

@LucaKiebel да, но второй и третий броски

Teoman Tıngır 17.09.2018 14:24

вроде не лучший дизайн. Для переменной можно задать значение undefined ...

akaphenom 17.09.2018 14:25

@ raina77ow есть ли какая-нибудь хорошая практика для проверки загрузки изображений?

Teoman Tıngır 17.09.2018 14:25

@ HasanTıngır, да. Сохраните ссылку на узлы в объекте на основе URL-адреса и проверьте, что: { "/img/img1.png": imgDOMNode }

Jared Smith 17.09.2018 14:26

@akaphenom Я открыт для советов :) Я новичок в javascript

Teoman Tıngır 17.09.2018 14:27

Измените let images = []; на images = []; в разделе catch, чтобы вы не создавали новую переменную, а использовали уже определенный images.

Gabriele Petrioli 17.09.2018 14:29

Что вы имеете в виду под загрузкой изображений с помощью javascript? вы делаете какой-то запрос ajax, который возвращает вам изображения или что? «Сначала я получаю URL-адрес изображения большого размера, и когда пользователь откроет моду, я загружу изображения большого размера». эта фраза неясна.

maximelian1986 17.09.2018 14:31

@GabrielePetrioli спасибо, это дало идею решить мою проблему

Teoman Tıngır 17.09.2018 14:37

Все ответы ДЕЙСТВИТЕЛЬНО отвечают на ваш вопрос, но на самом деле не решают вашу проблему. Вы никогда не должны (за некоторыми исключениями) проверять, объявлена ​​ли переменная; вместо этого вы должны проверить ценить этой переменной. И если вы хотите что-то делать при загрузке ваших изображений, просто обработайте их событие load.

raina77ow 17.09.2018 15:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
12
68
2

Ответы 2

Используйте следующий код:

if (typeof variable !== 'undefined') {
    // variable is defined
}
let foo; typeof foo /* undefined */; let foo; // ERROR: foo has already been declared
Jared Smith 17.09.2018 14:24

Великая Дхарматма верна. Проверка того, что тип переменной строго равен undefined, поможет решить вашу проблему.

if (typeof something !== 'undefined') {
    // do stuff when variable was declared
} else {
    // do stuff when variables was not declared
}

Я также предлагаю вам взглянуть на этот вопрос: Как проверить неопределенную переменную в JavaScript

В нем много объяснений не объявленных undefined и переменных null в javascript.

Нет, это не так. См. Мой комментарий к этому ответу.

Jared Smith 20.09.2018 00:27

Ты прав! Я неправильно понял весь корпус! Спасибо!

Fábio Peres Toi 20.09.2018 05:25

Другие вопросы по теме