在 JavaScript 中什么时候使用 ":"(冒号)运算符而不是 "="(等于)运算符?

20

我已经在网上查找了一个小时,但好像无法弄清楚何时在 JavaScript 中使用冒号运算符 : 和等于运算符 =?目前我能够发现的是,在定义对象属性时应该使用冒号 :


1
你是正确的。对象属性 {test: 'test'}。变量 var test = 'test'; - Blue
冒号不是一个运算符。 - user663031
冒号本身并没有被定义为运算符。它总是与其他东西一起使用或作为其一部分使用——在对象初始化器的大括号内,与?配对用于三元运算符,用于case子句标签的终止符。 - Jonathan Lonowski
3个回答

20
JavaScript语言是由布兰登·艾奇使用等号=作为赋值运算符构建的。回到1995年,大多数编程语言,例如BasicTurbo PascalDelphiCC++等都使用了相同的变量赋值方法。
在JavaScript中使用冒号: 快速创建新对象因道格拉斯·克罗克福德JSON规范的定义而变得流行。JSON比XML更易于编写且更紧凑。JSON.parse()方法消除了构建客户端XML解析器的需要。因此,JSON作为服务器和客户端浏览器之间的数据传输格式变得流行起来。
如果你查看http://www.json.org,你可以看到如何使用{"key1": value1, "key2": value2}的键值对符号快速编写新对象。冒号:的使用只是简写对象属性的长手写法,该写法使用等于号=作为运算符。
JavaScript长手写法示例:(73个字符)
let myObject = new Object();
myObject.a = 1;
myObject.b = 2;
myObject.c = 3;

简写JSON示例:(42个字符)

let myObject = {
  "a": 1,
  "b": 2,
  "c": 3
};

最小化示例:

let myObject=new Object();myObject.a=1;myObject.b=2;myObject.c=3; (65 characters)
let myObject={'a':1,'b':2,'c':3}; (33 characters with quotes, 27 characters without)

你可以在代码中使用等于号=或冒号:。没有规则或最佳实践来指定哪种更好。它们可以在同一行代码中一起使用。
let myObject = {a:1, b:2, c:3};

维基百科在他们的JSON页面上添加了更多关于JSON的背景信息。


1
似乎这个回答了。 - markmacw

5
冒号(:)运算符如你所说,用于定义对象属性:
var object = {
  property:value
}

等于(=)运算符用于将值分配给某些东西,例如变量、数组等。

如果您仅定义了对象:

var object = {}

您可以像这样为其分配属性:
object.property = value;

没错,但问题是何时使用冒号和等号。基本上,冒号允许使用速记本地作用域(“即时”)对象声明/实现。 - Dave2345

2

当你定义一个对象时,可以使用 : 符号来定义属性的值。

var obj = { test: "value" };
= 运算符用于定义变量的值。就像上面的例子中,变量 obj 等于那个对象。
请注意,您还可以使用 = 运算符定义对象属性。
var obj = {};
obj.test = "value";

或者

obj["test"] = "value";

1
是的,但是什么时候使用冒号和等号呢?原因是当你需要即时声明/实现对象(主要用于临时本地范围)时,你会使用简写符号(冒号)。 - Dave2345
正如我之前所说,唯一的用途是当您想要在对象内直接声明属性值时。 - quirimmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接