clearInterval () с помощью инструментов разработчика? [Дубликат]

0
задан onlyme0349 6 October 2015 в 12:16
поделиться

1 ответ

Как вы указали, игра работает нормально, что не удается, когда вы пытаетесь получить доступ к переменной с помощью консоли (в JSFiddle?), которая терпит неудачу. Это происходит по двум причинам:

  1. Контекст консоли.
  2. Область переменных.

Упрощение бит: контекст консоли - это документ, на который будут влиять действия консоли. По умолчанию в Chrome контекст является верхним фреймом, но его можно изменить с помощью раскрывающегося списка в верхнем левом углу:

В вашем случае , вы используете JSFiddle, а JSFiddle использует iframe для отображения результатов. Если область действия консоли - «& lt; top frame & gt;», то вы не сможете получить доступ к переменным из окна результатов. Вам нужно изменить раскрывающийся список на значение «result (fiddle.jshell.net/)».

Но даже если вы это сделаете, вы все равно получите ошибку. Почему это? из-за второй причины: область действия переменной. Снова упрощая бит, переменная scope является частью программы, которая может видеть / получать доступ к переменной. Это может быть все приложение (глобальная переменная) или просто его часть (локальная переменная).

В вашем случае вы используете ключевое слово var внутри функции (даже если вы не подумайте, что вы используете его внутри функции, на самом деле вы выбрали «Нагрузка» для выполнения JavaScript и который будет обертывать ваш код внутри анонимной функции, выполняемой при загрузке окна) и делает все переменные локальными для этой функции .

Когда вы пытаетесь распечатать переменные с консоли, они не могут быть доступны, поскольку их область действия является той конкретной функцией, и они не существуют вне ее. Чтобы решить эту проблему:

  • Сделайте переменные глобальными, удалив ключевое слово var. Этот параметр не рекомендуется, так как он может иметь неожиданные результаты (к переменной можно получить доступ к любой функции, а отладка / обслуживание может стать кошмаром); Или
  • Вместо использования опции «onLoad» для выполнения JavaScript используйте «No wrap-in & lt; body & gt;». Таким образом, ваш код не будет завернут в window.onload=function(){ }, но перейдите прямо в <script> в нижней части тела.

Хотя технически то, что вы делаете, делает переменные глобальный (потому что даже с var они находятся вне всех функций, поэтому они доступны любому).

tl; dr; - для решения проблемы:

  1. Измените контекст консоли на iframe.
  2. Измените область переменных, чтобы они могли получить доступ к консоли.
0
ответ дан Alvaro Montoro 19 August 2018 в 02:58
поделиться
  • 1
    Ваш ответ потрясающий и просто то, что я искал. Большое спасибо! – onlyme0349 6 October 2015 в 14:22
Другие вопросы по тегам:

Похожие вопросы: