Как я могу назначить переменную JavaScript в формате HTML?

Несколько объяснений. Первый - общий, второй - для макросов препроцессора C с параметрами:

Управление потоком

Я видел, что это используется в простом C-коде. В принципе, это более безопасная версия goto, так как вы можете вырваться из нее, и вся память очищается должным образом.

Почему что-то goto -подобно быть хорошим? Ну, если у вас есть код, в котором почти каждая строка может возвращать ошибку, но вам нужно реагировать на все одинаково (например, передав ошибку вашему вызывающему абоненту после очистки), обычно более читаемо, чтобы избежать if( error ) { /* cleanup and error string generation and return here */ }, поскольку он избегает дублирования кода очистки.

Однако в C ++ у вас есть исключения + RAII для этой цели, поэтому я бы назвал это неправильным стилем кодирования.

Точка с запятой проверка

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

#define PRINT_IF_DEBUGMODE_ON(msg) if( gDebugModeOn ) printf("foo");

. Это случайно называется

if( foo )
    PRINT_IF_DEBUGMODE_ON("Hullo\n")
else
    doSomethingElse();

. «Else» будет считаться связанным с gDebugModeOn, поэтому, когда foo false, точный реверс того, что предназначалось, будет иметь место.

Предоставление области для временных переменных.

Так как do / while имеет фигурные скобки, временные переменные имеют четко определенные область действия, с которой они не могут убежать.

Избегание предупреждений «возможно нежелательной точки с запятой»

Некоторые макросы активируются только в отладочных сборках. Вы определяете их как:

#if DEBUG
#define DBG_PRINT_NUM(n) printf("%d\n",n);
#else
#define DBG_PRINT_NUM(n) 
#endif

Теперь, если вы используете это в сборке релизов внутри условного выражения, он компилируется в

if( foo )
    ;

. Многие компиляторы видят это как то же, что

if( foo );

, который часто записывается случайно. Поэтому вы получаете предупреждение. Do {} while (false) скрывает это от компилятора и принимается им как указание на то, что вы действительно ничего не хотите здесь делать.

Избегать захвата строк на conditionals

Макрос из предыдущего примера:

if( foo )
    DBG_PRINT_NUM(42)
doSomething();

Теперь, в сборке отладки, поскольку мы также обычно включаем точку с запятой, это компилируется просто отлично. Однако в релиз-сборке это внезапно превращается в:

if( foo )

doSomething();

Или более четко отформатировано

if( foo )
    doSomething();

Это совсем не то, что было предназначено. Добавление do {...} while (false) вокруг макроса превращает недостающую точку с запятой в ошибку компиляции.

Что это значит для OP?

В общем, вы хотите использовать исключения в C ++ для обработки ошибок и шаблоны вместо макросов. Однако в очень редком случае, когда вам все еще нужны макросы (например, при генерации имен классов с использованием вставки меток) или они ограничены равным C, это полезный шаблон.

0
задан Nikolas Kim 19 March 2019 в 08:50
поделиться

5 ответов

Откройте консоль отладки и напишите там:

lookatthis = 20

Но это ничего не даст

0
ответ дан Alexander 19 March 2019 в 08:50
поделиться

Вы можете использовать метод log:

console.log(lookatthis);
0
ответ дан NiVeR 19 March 2019 в 08:50
поделиться

Вы достигаете этого, используя функцию подсказки

var lookatthis = prompt('Type the lokaltthis value');
0
ответ дан Dzmitry Aleinik 19 March 2019 в 08:50
поделиться

В любом месте вашего блока скриптов после первоначального присвоения lookatthis вы можете записать значение в консоль с помощью команды:

console.log (lookatthis);

0
ответ дан Richard Uie 19 March 2019 в 08:50
поделиться

Если вам нужно иметь возможность «установить» значение lookatthis, вы можете использовать вход и с помощью jquery или pure js получить значение ввода и присвоить его «lookatthis».

Редактировать: Вы также можете использовать в консоли Chrome: lookatthis=25, но, поскольку ваш скрипт загружается при загрузке страницы, изменения не будут отображаться, но значение будет изменено

0
ответ дан Drusto 19 March 2019 в 08:50
поделиться
Другие вопросы по тегам:

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