为什么在JavaScript中为块范围变量声明选择了名称“ let”?

2020/10/03 10:21 · javascript ·  · 0评论

我知道为什么要使用var该名称-它是变量,const-它是一个常数,但是for的名称后面的含义是什么let,该范围作用于当前块?随它去?

Let是早期编程语言(例如Scheme和Basic)采用的数学表达式。变量被认为是不适合较高抽象级别的低级实体,因此许多语言设计人员希望引入类似但功能更强大的概念,例如Clojure,F#,Scala,其中let可能表示值或可以分配变量,但未更改,这反过来又使编译器可以捕获更多编程错误并更好地优化代码。

JavaScriptvar从一开始就有了,所以他们只需要另一个关键字,就从其他几十种let已经尽可能使用作为传统关键字的语言中借来了var,尽管在JavaScript中let创建了块范围局部变量。

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

除了对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如此……

  证明的东西

 新思想{让x成为其他事物……证明事物}得出新思想

 用x证明主要思想

它确实var在范围上有所不同。现在它不能使用该名称,var因为该名称已经被使用。

因此,它看起来已经采用了在具有吸引力的英语语言结构中具有语义的次佳名称。

let myPet = 'dog';

用英语说“让我的宠物成为狗”

最可能的可能性是它是最惯用的选择。不仅说起来容易,而且理解起来很直观。有些人甚至可以争论var

但是我认为这还有更多的历史。

维基百科

Dana Scott的LCF语言是lambda演算向现代功能语言演变的阶段。这种语言引入了let表达式,从那时起该表达式就出现在大多数功能语言中。

诸如ALGOL和Pascal之类的全状态命令式语言本质上实现了let表达式,以在块结构中实现有限的功能范围。

我想也相信这对于letJavascript也是一个启发

Let使用更直接的块级限制范围,而var通常是函数范围或全局范围。

似乎最有可能选择let,因为在许多其他语言中都可以找到let来定义变量,例如BASIC和许多其他语言。

我认为JavaScript对Scheme的负债在这里很明显。Scheme不仅具有let,而且具有let *,let *值,let语法和let值。(请参阅《方案编程语言》,第四版)。

((此选择进一步增强了JavaScript是Lispy的概念的可信度,但在我们被迷住之前,不是谐音。)))

这也意味着像“词法环境类型或捆绑”。它困扰我,这将仅仅是“让成为那个”。而且让rec在lambda演算中毫无意义。

本文地址:http://javascript.askforanswer.com/weishenmezaijavascriptzhongweikuaifanweibianliangshengmingxuanzelemingcheng-let.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!