名字/标识符

名字 是指代表某些东西的有助于记忆的字符序列。名字可以使我们采用符号形式标识符引用变量、常量、子程序、形参而不用采用更低级的如地址一类的概念。从低级语言到高级语言的发展过程中,名字 是抽象出来的最重要的概念之一。

名字不只是用于变量,也常用于常量、子程序、形参等。标识符一词常常与名字概念互换使用。

一、名字的长度

早期的程序设计主要用来解决数学问题,数学中常用的就是单个字符的变量。如x,y,z。
Fortran1 打破了使用单个字符名字的传统,它最多允许使用6个字符。直至到Fortran77。
Fortran95 中变量名字最多允许31个字符。
C89/Java/JavaScript/Ada/C# 对名字长度没有限制,但Ada中允许施加一种长度限制,这种限制不少于200个字符。
C99类似于C89,但名字中前63个字符必须有意义。


二、名字是否区分大小写

多数语言,如基于C的语言中(Java,JavaScript等),名字是区分大小写的。或者说这些语言中名字大小写是敏感的。
如 name,Name,NAME 是三个不同的标识符。部分人觉得很疑惑,这明明就是一个东西啊。认为这严重损害了语言的可读性。
因为看上去十分相似的名字实际上却表达了不同的实体。


三、特殊的名字-特殊字

名字中有一些受到特别关注的,称为特殊字。特殊字分为关键字 和保留字 。

关键字 ,它只在特定的上下文中式特殊的。
如JavaScript中function内的arguments,它只在function内是特殊的,你仍然可以 使用它作为标识符 ,如变量名,函数名。但显然这样会引起歧义。

保留字 ,它是程序设计语言中的特殊字,它不能用做变量、形参、子程序等的名字。
如Java中的class,JavaScript中的var。又或C、Java、JavaScript中的while,for等。这些都不能作为标识符。

这两个概念其实很清楚,但后续将其模糊了。尤其在ECMAScript5中提出了“keyword”和“Future Reserved Words”的概念。
如ECMAScript5中将var、break、for、while等称为关键字(keyword),见ECMAScript5 7.6.1.1

把为语言后续版本预留的,暂未实现的名字称为未来保留字(Future Reserved Words),见ECMAScript5 7.6.1.2

一些书籍表述也各不同,

《JavaScript高级程序设计》第二版基本上和ECMAScript 5 一致,称var、break、for,while等是关键字。见该书19页。按最早的概念是不对的,应该称保留字。
《JavaScript权威指南》第五版亦未分清关键字和保留字,2.8节大标题为“保留字”,表2-1又称“保留的JavaScript关键字”,表2-2又称“ECMA扩展保留的关键字”。实际上这些都是保留字,前者是已经实现的,后者是为语言后续版本预留的暂未实现的。

当然这一切由于ECMAScript5 自身就没有严格的区分关键字和保留字的概念。


四、大多语言,名字有以下规则

1,第一个字符时字母、下划线(_)或美元符号($)
2,剩下字符可以是字母、下划线、美元符号和数字

posted on   snandy  阅读(6567)  评论(5编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2011年3月 >
27 28 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示