Подтвердить что ты не робот

В чем смысл "буквального" в условной литературе фразы?

В Javascript: "Хорошие детали" Дуглас Крокфорд пишет, что одна из хороших идей Javascript - "буквальная буквальная буква". Я понимаю, что он в основном комплимент JSON.

Но что такое "буквальный" об этой нотации? Существуют ли другие языки, которые используют "выразительную литературу объекта"? Есть ли языки, которые этого не делают? Что он имеет в виду?

4b9b3361

Ответ 1

О "комплиментации JSON": он указал его.

"Литеральная" часть: "Литерал объектов" в Googling предоставляет два главных ресурса: MDN и Wikipedia. Чтобы процитировать последнее:

В информатике литерал представляет собой обозначение для представления фиксированного значения в исходном коде. Почти все языки программирования имеют обозначения для атомных значений, таких как целые числа, числа с плавающей запятой и строки, и обычно для булевых символов и символов; некоторые также имеют обозначения для элементов перечисляемых типов и составных значений, таких как массивы, записи и объекты.

В принципе, все синтаксические конструкции, использование которых приводит к определенному типу, можно назвать литералом. (Например, строковый литерал, "abc".) Это технический термин, который означает, что "буквально" что-то пишется тем или иным способом приводит исключительно к типизированной переменной (в отличие от конструкций, которые выглядят как что-то еще, например array() в PHP).

Ответ 2

Что ж, в программировании вообще литерал - это фиксированное значение. Как сказать, var five = 5; и используя "пять" в некоторой математике, просто используйте число 5 буквально.

Таким образом, в языке ООП объектный литерал будет выглядеть примерно так:

var new_dog = {
    name: "doggy",
    good_dog: false
};

Все это мой объект. Вещи между моими {} являются моими литералами. Моя нотация это шаблон "имя: значение".

Ответ 3

Литеральный объект - это список пар имен, разделенных запятыми, завернутый в фигурные скобки. В JavaScript литерал объекта определяется следующим образом:

var someObject = {
    some_prop: 'some string value',
    another_prop: 'another string value',
    int_prop: 100
};

Он "плоский". Вы создаете его, добавляете к нему свойства и методы, и все эти свойства и методы являются общедоступными. Объектные литералы формируются с использованием следующих правил синтаксиса:

  • Двоеточие отделяет имя свойства от значения.
  • Запятая отделяет каждую пару имя/значение от следующей.
  • После пары имен/значений не может быть запятой. Но в этом случае Internet Explorer до версии 9 обычно вызывает ошибку: "Ожидаемый идентификатор, строка или номер".

Значения могут быть любого типа данных, включая литералы массивов, функции и литералы вложенных объектов.

Хотя объектный объект JavaScript и объект экземпляра JavaScript являются обоими объектами, они отличаются свойственной природой и функциями

Ответ 4

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

Под "типом" мы подразумеваем классификацию переменной (разные типы переменных могут делать разные вещи). Обычно говорят о литералах примитивного типа, таких как строки, числа и логические значения. Вот пример строкового литерала:

let myStr = 'word'; 

В этом случае word является строковым литералом; вы создали что-то буквально строковое.

В JS вы также можете иметь объектные литералы. То есть вы можете просто напечатать эту вещь между фигурными скобками, и она автоматически становится объектной.

let mylitteralObject = {};

Мы создали объект без использования оператора (оператор по сути является встроенной функцией, использующей знакомый синтаксис, такой как "+"). Движок JS смотрит на фигурные скобки и определяет, что вы объявляете объект.

Беспоставочный буквальный способом является использование объекта конструктора - функция, которая в сочетании с new ключевым словом, чтобы сделать новый объект.

let myConstructedObject =  new Object();

Здесь новое ключевое слово рассматривается как оператор. Таким образом, данные внутри myConstructedObject являются результатом оценки выражения.

Ответ 5

Я боролся с этим сам. Хотя я нашел полезные ответы, я нашел простое определение для literal в Webopedia:

В программировании значение записывается именно так, как оно должно быть интерпретировано. Напротив, переменная - это имя, которое может представлять различные значения во время выполнения программы. А константа - это имя, представляющее одно и то же значение в программе. Но литерал - это не имя, а само значение.

Литерал может быть числом, символом или строкой. Например, в выражении

x = 3

x - это переменная, а 3 - литерал.

То, что действительно показалось мне, было

Но литерал - это не имя, а само значение.

Кроме того, этот пост Кару также очень полезен. Я оценил этот комментарий:

В основном код, который представляет значение в программе вместо того, чтобы иметь особое значение для выполнения программы. Например: 15 буквально означает пятнадцать в программе vs +, которая имеет особое значение "сложить две вещи вместе". Вы бы не рассматривали + как знак плюса, поскольку он не является литералом.

И этот ответ был полезен:

Quick example:

int my_int_var = 723;

723 - этот набор символов относится к буквальному целочисленному значению.

my_int_var - этот набор символов относится к целочисленному значению переменной.