Почему было выбрано имя "let" для объявлений переменных в блочной области в JavaScript?

Я понимаю, почему var принимает это имя - это переменная, const - это константа, но в чем смысл названия для let, который привязан к текущему блоку? Пусть это будет?

Ответ 1

Это математическое утверждение, которое было принято на ранних языках программирования, таких как Scheme и Basic. Переменные считаются объектами низкого уровня, не подходящими для более высоких уровней абстракции, поэтому желание многих разработчиков языка вводить похожие, но более мощные понятия, такие как Clojure, F #, Scala, где let может означать значение или переменную, которая может быть назначена, но не изменена, что, в свою очередь, позволяет компилятору уловить больше ошибок программирования и лучше оптимизировать код. JavaScript имеет var с самого начала, поэтому им просто нужно другое ключевое слово и просто заимствовано из десятков других языков, которые используют let уже как традиционное ключевое слово как можно ближе к var, хотя в JavaScript let вместо этого создает локальную переменную области блока.

Ответ 2

Я предполагаю, что это соответствует математической традиции. В математике часто говорят, что "пусть x - произвольное действительное число" или тому подобное.

Ответ 3

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

Итак, похоже, что оно заняло следующее лучшее имя, которое имеет семантику в интересной конструкции английского языка.

let myPet = 'dog';

На английском языке говорится: "Пусть мое домашнее животное будет собакой"

Ответ 4

Добавляя в ответ exebook, использование математики ключевого слова let также хорошо отражает объемные значения let при использовании в Javascript/ES6. В частности, так же, как следующий код ES6 игнорирует назначение в фигурных скобках toPrint и выводит значение 'Hello World':

let toPrint = 'Hello World.';
{
    let toPrint = 'Goodbye World.';
}
console.log(toPrint); // Prints 'Hello World'

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

Пусть x так и так...

& EnSP; Доказательство

& ensp; Новая идея {Пусть x - что-то еще... доказать что-то} Заключить новую идею

& ensp; Докажите основную идею старым x

Ответ 5

Наиболее вероятная возможность состоит в том, что это был самый идиоматический выбор. Это не только легко говорить, но и интуитивно понятно. Некоторые могут возразить, даже больше, чем var.

Но я считаю здесь немного больше истории.

Из Википедии:

Язык Dana Scott LCF был этапом в эволюции лямбда-исчисления в современные функциональные языки. Этот язык ввел выражение let, которое появилось на большинстве функциональных языков с того времени.

Полнотекстовые императивные языки, такие как ALGOL и Pascal, по существу реализуют выражение let, чтобы реализовать ограниченную область функций в блочных структурах.

Я хотел бы верить, что это тоже было вдохновение для let в Javascript.

Ответ 6

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

Кажется, что let был выбран, скорее всего, потому, что он найден на многих других языках для определения переменных, таких как BASIC и многих других.