为什么在JavaScript中为“块”范围的variables声明select了“let”?
我明白为什么var
需要这个名字 – 它是可变的, const
– 它是一个常量,但let
的名字后面的含义是什么? 随它去?
让我们来看一个早期编程语言如Scheme和Basic所采用的math语句。 variables被认为是低层次的实体,不适合更高层次的抽象,因此许多语言devise者希望引入类似但更强大的概念,比如Clojure,F#,Scala,其中let
可能意味着一个值,或者是一个可以赋值的variables,但是没有改变 ,这又使得编译器捕捉到更多的编程错误并更好地优化代码。 JavaScript从一开始就有了var
,所以他们只需要另外一个关键字,并且从几十种其他语言中借用,尽可能使用已经作为传统关键字的尽可能接近var
JavaScript,尽pipe在JavaScript中创build了块范围局部variables。
我想它遵循math传统。 在math中,人们经常说“让x是任意的实数”或者这样。
它确实做了var
与范围差异。 现在它已经不能使用名称var
了。
所以看起来,它已经采取了有趣的英语语言结构中具有语义的下一个最好的名字。
let myPet = 'dog';
用英文说“让我的宠物成为狗”
增加了对于exebook的响应 ,关键字的math用法让我们也很好的封装了在Javascript / ES6中使用的范围含义。 具体来说,正如下面的ES6代码忽略toPrint
大括号的toPrint
并打印出'Hello World'
的值:
let toPrint = 'Hello World.'; { let toPrint = 'Goodbye World.'; } console.log(toPrint); // Prints 'Hello World'
让用于forms化math(特别是certificate的写作)表明,variables的当前实例仅存在于该逻辑思想的范围内。 在下面的例子中,x在input新想法时立即获得新的身份(通常这些是certificate主要想法所必需的概念),并在分证结束时立即恢复到旧的x。 当然,就像在编码中一样,这被认为有些混乱,所以通常通过为其他variablesselect不同的名称来避免。
让x如此…
certificate的东西
新的想法{让x是别的…certificate某事}结束新的想法
用老xcertificate主要想法
最有可能的是这是最习惯的select。 不仅说话容易,而且直观易懂。 有些人可能会认为,甚至比var
更重要。
但我认为还有更多的历史。
从维基百科:
达纳•斯科特(Dana Scott)的LCF语言是lambda微积分演变为现代function语言的一个阶段。 这种语言引入了从那时起在大多数function语言中出现的letexpression式。
ALGOL和Pascal等全状态命令式语言实质上实现了一个letexpression式,以块结构实现受限的函数范围。
我想相信这也是一个启发,因为let
Javascript。