黄子涵

4.3 标识符

标识符是开发者在程序中所定义的单词,例如变量名或是函数名。虽说标识符中可以使用的字符是有所限制的,不过只要不与保留字中的单词重复就没有问题,所以实际上可以生成无限多的标识符。其具体的命名规则如下。

  • 必须是除保留字以外的单词。
  • 必须是除 true、false、null 以外的单词。
  • 必须是以 Unicode 的(非空)字符开始,之后接有Unicode 字符或是数字的单词。
  • 单词的长度并无限制。

image

不能使用和保留字相同的单词作为标识符。例如,如果有一个函数被命名为 do,那么就会引起 SyntaxError。不过,如果仅仅是在标识符的字符中包含了保留字就没有问题,例如 doit 这样的函数名就是合法的。

var do = 7;
console.log("输出do的值:");
console.log(do);
var doit = 8;
console.log("输出doit的值:");
console.log(doit);
[Running] node "e:\HMV\JavaScript\JavaScript.js"
e:\HMV\JavaScript\JavaScript.js:1
var do = 7;
    ^^

SyntaxError: Unexpected token 'do'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47

[Done] exited with code=1 in 0.193 seconds

true、false 和 null 这三个单词是字面量,不能被用作标识符。就好比数值字面量 1 或是字符串字面量 "abc" 不能被用作标识符一样,这三个字面量也不能被用作标识符。

image

JavaScript 中的标识符都是以 Unicode 字符所组成的单词。Unicode 字符中包含了日文字符(日文汉字以及平片假名),所以从语法上来说,是可以使用日文作为变量名以及函数名的。不过,由于一些历史原因以及习惯用法,并不推荐使用日文作为标识符。在实际的编程过程中应当遵循以下的规则,即应该使用以英文字符(大写或是小写的英文字符)、_(下划线字符)或是 $(美元字符)开始,之后接有英文字符、_$、数字(0 至 9)的单词。

var hzh = 'hzh';
var HZH = 'HZH';
var _hzh = '_hzh';
var $hzh = '$hzh';

var hzh_ = 'hzh_';
var hzh$ = 'hzh$';
var hzh6 = 'hzh6';

var HZH_ = 'HZH_';
var HZH$ = 'HZH$';
var HZH9 = 'HZH9';

var _hzh_ = '_hzh_';
var _hzh$ = '_hzh$';
var _hzh12 = '_hzh12';

var $hzh_ = '$hzh_';
var $hzh$ = '$hzh$';
var $hzh15 = '$hzh15';

var hzh_$ = 'hzh_$';
var hzh_0 = 'hzh_0';
var hzh$0 = 'hzh$0';

var HZH_$ = 'HZH_$';
var HZH_0 = 'HZH_0';
var HZH$0 = 'HZH$0';

var _hzh_$ = '_hzh_$';
var _hzh_0 = '_hzh_0';
var _hzh$0 = '_hzh$0';

var $hzh_$ = '$hzh_$';
var $hzh_0 = '$hzh_0';
var $hzh$0 = '$hzh$0';

console.log("看看能不能把它们打印出来:");
console.log(hzh,  HZH, _hzh, $hzh, hzh_, hzh$, hzh6);
console.log(HZH_, HZH$, HZH9, _hzh_, _hzh$, _hzh12);
console.log($hzh_, $hzh$, $hzh15, hzh_$, hzh_0);
console.log(hzh$0, HZH_$, HZH_0, HZH$0, _hzh_$);
console.log(_hzh_0, _hzh$0, $hzh_$, $hzh_0, $hzh$0);
[Running] node "e:\HMV\JavaScript\JavaScript.js"
看看能不能把它们打印出来:
hzh HZH _hzh $hzh hzh_ hzh$ hzh6
HZH_ HZH$ HZH9 _hzh_ _hzh$ _hzh12
$hzh_ $hzh$ $hzh15 hzh_$ hzh_0
hzh$0 HZH_$ HZH_0 HZH$0 _hzh_$
_hzh_0 _hzh$0 $hzh_$ $hzh_0 $hzh$0

[Done] exited with code=0 in 0.188 seconds

习惯上,以下划线(_)开始的标识符会被作为“内部标识符”来使用。又因为在 prototype.js 中,getElementById 函数的别名被记为了$,所以一些常用名称的别名常常会使用以美元符号($)开始的标识符。

posted @ 2022-05-27 17:30  黄子涵  阅读(118)  评论(0编辑  收藏  举报