我理解为什么var取这个名字-它是变量,const -它是常量,但是let这个名字背后的含义是什么,它的作用域是当前块?顺其自然?
当前回答
我想这是遵循数学传统的。在数学中,我们常说"设x为任意实数"之类的。
其他回答
最有可能的是,这是最地道的选择。它不仅讲起来容易,而且很容易理解。有人可能会说,比var更重要。
但我觉得这事还有更久远的历史。
从维基百科:
Dana Scott的LCF语言是lambda演算向现代函数语言演变的一个阶段。这种语言引入了let表达式,从那时起,它就出现在大多数函数式语言中。 全状态命令式语言,如ALGOL和Pascal,本质上是在块结构中实现let表达式,以实现有限范围的函数。
我愿意相信这对Javascript中的let也是一种启发。
Let是早期编程语言(如Scheme和Basic)采用的数学语句。变量被认为是低级实体,不适合高级抽象,因此许多语言设计者希望引入类似但更强大的概念,如Clojure、f#和Scala,其中let可能意味着一个值,或一个可以赋值但不能更改的变量,这反过来让编译器捕捉更多的编程错误并更好地优化代码。
JavaScript从一开始就有var,所以他们只是需要另一个关键字,只是借用了几十种其他语言,这些语言已经使用let作为传统关键字,尽可能接近var,尽管在JavaScript中let创建块作用域局部变量。
我认为JavaScript对Scheme的亏欠是显而易见的。Scheme不仅有let,还有let*、let*-values、let-syntax和let-values。(参见方案编程语言,第4版)。
(这个选择进一步证明了JavaScript是Lispy,但是——在我们失去理智之前——并不是同源的。))))
它也可以指“词汇环境类型或绑定”之类的东西。让我感到困扰的是,它仅仅是“让这个成为那个”。让rec在微积分中没有意义。
它的作用与var的作用完全相同。现在它不能取名称var,因为已经取了。
所以它看起来已经采取了下一个最好的名字,在一个有趣的英语语言结构中有一个语义。
let myPet = 'dog';
在英语中它说“让我的宠物是一只狗”
推荐文章
- Node.js和CPU密集型请求
- val()和text()的区别
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- Bower: ENOGIT Git未安装或不在PATH中
- 添加javascript选项选择
- 在Node.js中克隆对象
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 使用JavaScript更改URL参数并指定默认值
- 在window.setTimeout()发生之前取消/终止
- 如何删除未定义和空值从一个对象使用lodash?
- 检测当用户滚动到底部的div与jQuery
- 在JavaScript中检查字符串包含另一个子字符串的最快方法?
- 检测视口方向,如果方向是纵向显示警告消息通知用户的指示