JavaScript: нельзя просмотреть неглобальную переменную в консоли браузера?

Может быть, глупый вопрос, но я все еще немного застрял, не будучи уверенным в ответах на 100%.

Итак, у меня есть файл index.html, который вызывает функцию в файле example.js (просто добавив его для пояснения):

function sinusGraph() {
var plotstart = 0, 
    plotrange = 20,
    stepsize = 0.5; // not in use right now

var yValues, xValues;

function sinusValues(startinput, stopinput) 
{ 
    return d3.range(startinput, stopinput+1).map(function(i) 
    {
        return Math.sin(i);
    })
};

function xAxisValues(startinput, stopinput) 
{ 
    return d3.range(startinput, stopinput+1).map(function(i) 
    {
        return i;
    })
};

xValues = xAxisValues(plotstart, plotrange); 
yValues = sinusValues(plotstart, plotrange);  };

Написание, например, "xValues" с переменными, объявленными в браузере, возвращает "xValues ​​is notdefined(...)".

Удаление «var xValues», позволяющее ему быть глобальной переменной, возвращает значение.

Мои вопросы:

  1. Консоль инструментов браузера не может видеть неглобальные переменные внутри функций?

  2. Если это так, то является ли это хорошим инструментом для поиска потенциальных глобальных переменных, которые вы создали по ошибке?

  3. Есть ли способ просмотреть эти переменные в инструментальной консоли браузера, кроме использования console.log(myVariable) внутри функции, в которой она объявлена?

person user2703642    schedule 26.10.2016    source источник
comment
установите точку останова и проверьте переменную при попадании, добавьте строку console.log в код и запишите значение.   -  person epascarello    schedule 26.10.2016


Ответы (2)


Консоль инструментов браузера не может видеть неглобальные переменные внутри функций?

Да.

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

  • какое значение вы ожидаете получить при вводе varname в консоли? Начальное значение, последнее значение или все значения?
  • что, если несколько функций имеют локальную переменную с одинаковым именем?
  • что, если одна и та же функция уже выполнялась несколько раз?

Вы можете только проверить текущее состояние вашего приложения.

Если это так, то является ли это хорошим инструментом для поиска потенциальных глобальных переменных, которые вы создали по ошибке?

Нет. Вам следует использовать линтер, такой как ESLint, который предупредит вас, если вы забудете, например. объявление var. Также включите строгий режим. : присваивание необъявленным переменным вызовет ошибку.

Есть ли способ просмотреть эти переменные в инструментальной консоли браузера, кроме использования console.log(myVariable) внутри функции, в которой она объявлена?

Установите точку останова в коде либо с помощью devtools или через debugger. Выполнение кода будет приостановлено в точке останова, и консоль получит доступ ко всему, что доступно в точке останова.

person Felix Kling    schedule 26.10.2016

Консоль должна запускать код в некоторой области (и она не может получить доступ к области, определенной функцией, которая все равно не запущена).

Установите точку останова внутри функции, чтобы приостановить выполнение там. Когда эта точка останова сработает, область действия консоли будет связана с этой функцией.

person Quentin    schedule 26.10.2016