flowers
什么是标识符、变量名、属性名、函数名,它们有啥区别和关联?【JavaScript基础 ES6最新】

2021.07.065 min read

原创声明:未经允许,禁止转载

开发中总是会经常听到标识符,变量名,属性名,函数名balabala,听着听着就混了。。。今天我们来搞清楚!

什么是标识符(Identifier)

标识符是代码中用来标识 变量函数属性 的一个字符序列。 因此下面要提到的变量名、函数名、属性名都属于标识符。

在 JavaScript 中,标识符区分大小写,可以包含 Unicode 字母、 $ 、 _ 和数字 (0-9),但不能以数字开头。

标识符一般都采用驼峰命名法:

  • 首字母小写,每个单词的开头字母大写,其余字母小写
  • 例如:helloWord、doImportantThings

下面的都是合法标识符:

  • example123
  • _tmp
  • $elect
  • π

下面这些则是不合法的标识符。

  • 1a // 第一个字符不能是数字
  • *a*b // 标识符不能包含星号
  • a+b // 标识符不能包含加号
  • -d // 标识符不能包含减号或连词线

下面是ECMA-262第六版中规定的保留字,不能用作标识符:

break case catch class const continue debugger default delete

do else export extends finally for function if import

in instanceof new return super switch this throw try

typeof var void while with yield

另外ECMA-262第六版还规定了“将来保留字(future reserved words)” :

  • 永远保留:

enum

  • 仅在严格模式(strict mode)下保留:

implements interface let package protected private public static

  • 仅在模块代码中保留:

await

理论上Unicode字符都可以做标识符,所以中文也可以,例如:

  • var 中文 = “你好!”; alert(中文);

    ⚠️ 但实际开发不建议用中文命名标识符!!!


什么是变量名(Variable)

可变意味着任何可以改变的东西。 JavaScript变量用来保存数据值,它可以随时更改。 ECMAScript 变量是松散类型的,这意味着变量可以保存任何类型的数据。每个变量只是一个值的命名占位符。可以使用三个关键字来声明变量:

  • var,在所有 ECMAScript 版本中都可用
  • constlet,在 ECMAScript 6 中引入

比如,在某个 JavaScript方法中定义的以下变量, x,y,z即是变量名(亦即是上面所说的标识符):

var x = 5;
var y = 6;
var z = x + y;

有关JavaScript中变量的详细解说可以参看这篇: JavaScript ES6“变量”详细解说:Var,Let,Const到底有啥区别?该用哪个?

什么是属性名(Property name)

JavaScript 是基于简单的面向对象的范式设计的。对象是属性的集合,属性是名称(或键)和值之间的关联。

属性的值可以是函数,在这种情况下,该属性称为方法,属性名即是“方法名”或“函数名”。

你可以通过以下方式获取一个对象的属性名 objectName.propertyName

比如以下示例中在名为myCar的对象里定义的maker,model和year就是属性名:

var myCar = new Object();
myCar.maker = 'Ford';
myCar.model = 'Mustang';
myCar.year = 1969;

当然也可以用下面的写法,效果一样:

var myCar = {
    make: 'Ford',
    model: 'Mustang',
    year: 1969
};

一张图搞懂它们之间的关系

现在,你搞清楚了吗?