Why was the name 'let' chosen for block-scoped variable declarations in JavaScript?

后端 未结 8 784
醉酒成梦
醉酒成梦 2020-12-07 06:47

I understand why var takes that name - it is variable, const - it is a constant, but what is the meaning behind the name for let, whic

相关标签:
8条回答
  • 2020-12-07 07:19

    Let is a mathematical statement that was adopted by early programming languages like Scheme and Basic. Variables are considered low level entities not suitable for higher levels of abstraction, thus the desire of many language designers to introduce similar but more powerful concepts like in Clojure, F#, Scala, where let might mean a value, or a variable that can be assigned, but not changed, which in turn lets the compiler catch more programming errors and optimize code better.

    JavaScript has had var from the beginning, so they just needed another keyword, and just borrowed from dozens of other languages that use let already as a traditional keyword as close to var as possible, although in JavaScript let creates block scope local variable instead.

    0 讨论(0)
  • 2020-12-07 07:26

    It does exactly what the var does with a scope difference. Now it can not take the name var since that is already taken.

    So it looks that it has taken the next best name which has a semantic in an interesting English language construct.

    let myPet = 'dog';
    

    In English it says "Let my pet be a dog"

    0 讨论(0)
  • 2020-12-07 07:28

    It could also mean something like "Lexical Environment Type or Tied".. It bothers me that it would simply be "let this be that". And let rec wouldn't make sense in lambda calculus.

    0 讨论(0)
  • 2020-12-07 07:29

    Adding to exebook's response, the mathematics usage of the keyword let also encapsulates well the scoping implications of let when used in Javascript/ES6. Specifically, just as the following ES6 code is not aware of the assignment in braces of toPrint when it prints out the value of 'Hello World',

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

    let as used in formalized mathematics (especially the writing of proofs) indicates that the current instance of a variable exists only for the scope of that logical idea. In the following example, x immediately gains a new identity upon entering the new idea (usually these are concepts necessary to prove the main idea) and reverts immediately to the old x upon the conclusion of the sub-proof. Of course, just as in coding, this is considered somewhat confusing and so is usually avoided by choosing a different name for the other variable.

    Let x be so and so...

      Proof stuff

     New Idea { Let x be something else ... prove something } Conclude New Idea

     Prove main idea with old x

    0 讨论(0)
  • 2020-12-07 07:34

    I guess it follows mathematical tradition. In mathematics, it is often said "let x be arbitrary real number" or like that.

    0 讨论(0)
  • 2020-12-07 07:36

    I think JavaScript's indebtedness to Scheme is obvious here. Scheme not only has let, but has let*, let*-values, let-syntax, and let-values. (See, The Scheme Programming Language, 4th Ed.).

    ((The choice adds further credence to the notion that JavaScript is Lispy, but--before we get carried away--not homoiconic.))))

    0 讨论(0)
提交回复
热议问题