Сравнение Javascript для Blank Object Literal [дубликат]

Я недавно занимался этим вопросом, а вместо того, чтобы установить родительский font-size:0, а затем вернуть ребёнка к разумному значению, я получаю согласованные результаты, установив родительский контейнер letter-spacing:-.25em, а потом обратно в letter-spacing:normal.

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

Использование ems работает независимо от того, задан ли размер шрифта 100%, 15pt или 36px.

http://cdpn.io/dKIjo

9
задан ipartola 25 June 2013 в 14:39
поделиться

2 ответа

NodeJS REPL оценивает код как выражение , обертывая код в круглых скобках, вызывая {"hello":1} как ({"hello":1}), который успешно анализируется как литерал объекта.

Обычно и в другом месте (в консоли Chrome / Firefox) фигурные скобки обрабатываются как разделители блока, например:

/*imagine if (true) */ {
    "hello": 1 // <-- What's this syntax? It's meaningless.
}

{hello:1} успешно разбираются, поскольку hello в этом контексте имеет значение метки :

/*imagine if (true) */ {
    hello: 1;
} //        ^-- Automatic Semicolon Insertion
11
ответ дан Dan D. 25 August 2018 в 09:36
поделиться

Первый пример - это не литерал объекта, это блок . Блоки содержат утверждения. Скрипт Строковый литерал , двоеточие , Числовой литерал не является допустимым оператором.

Второй пример - это объектный литерал .

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

Контекст важен для JavaScript.

13
ответ дан Quentin 25 August 2018 в 09:36
поделиться
Другие вопросы по тегам:

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