':'(冒号)在 JavaScript 中有什么作用?

IT技术 javascript
2021-01-30 03:06:06

我正在学习 JavaScript,在浏览 jQuery 库时,我发现:(冒号)被大量使用。这在 JavaScript 中是做什么用的?

// Return an array of filtered elements (r)
// and the modified expression string (t)
   return { r: r, t: t };
6个回答
var o = {
    r: 'some value',
    t: 'some other value'
};

在功能上等同于

var o = new Object();
o.r = 'some value';
o.t = 'some other value';
如果没有封闭对象怎么办?
2021-03-20 03:06:06
非常类似于 C# 对象初始值设定项语法。谢谢!
2021-04-05 03:06:06
@FranciscI.B 如果我不得不猜测,我认为那是 TypeScript,它是 JavaScript 的超集。它声明了一个类,其变量名为 xMin,其类型为浮点数。相当sur 就是这个意思。
2021-04-05 03:06:06

而且,冒号可用于标记语句。例如

var i = 100, j = 100;
outerloop:
while(i>0) {
  while(j>0) {
   j++

   if(j>50) {
     break outerloop;
   }
  }
i++

}
是的,这就是为什么 a=>{b:2} 不会抛出并返回 undefined
2021-03-17 03:06:06
goto 无法伪装:您只需打破 goto;你已经找到了!;)
2021-04-10 03:06:06
2021-04-10 03:06:06

你们忘记了冒号也用于三元运算符(尽管我不知道 jquery 是否为此目的使用它)。

三元运算符是 if/then 语句的表达式形式(表达式返回值)。它是这样使用的:

var result = (condition) ? (value1) : (value2) ;

三元运算符也可用于产生副作用,就像 if/then 一样,但这是非常糟糕的做法。

看到它用于标签和其他任何东西真是太棒了,所以使用永远不会混淆@AtesGoral 因为我现在仍在谷歌搜索这些。
2021-03-20 03:06:06
也许列出 : 未在 Javascript 中使用的内容会更容易。
2021-03-24 03:06:06
是的,我确实是这个意思。我应该远离互联网,真的,如果我要公然错误地识别这样的编程概念。
2021-03-26 03:06:06
又名“三元运算符”。请注意,OP 严格询问对象文字情况。如果我们要超越 OP 的要求,冒号也用于标签。
2021-03-27 03:06:06

':' 基本上是键值对的分隔符。在您的示例中,它是 Javascript Object Literal 表示法。

在 javascript 中,对象是用冒号分隔属性的标识符及其值来定义的,因此您可以拥有以下内容:

return { 
    Property1 : 125,
    Property2 : "something",
    Method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

然后像这样使用它:

var o =  { 
    property1 : 125,
    property2 : "something",
    method1 : function() { /* do nothing */ },
    array: [5, 3, 6, 7]
};

alert(o.property1); // Will display "125"

其中的一个子集也称为 JSON(Javascript 对象表示法),它在 AJAX 调用中很有用,因为它在服务器端语言中紧凑且快速解析,并且 Javascript 可以轻松地将 JSON 字符串反序列化为对象。

// The parenthesis '(' & ')' around the object are important here
var o = eval('(' + "{key: \"value\"}" + ')');

如果键包含某种特殊字符或空格,您也可以将键放在引号内,但我不建议这样做,因为它只会使事情更难处理。

请记住,JavaScript语言中的JavaScript Object Literal Notation与用于消息传递的 JSON 标准不同。两者之间的主要区别在于函数和构造函数不是JSON 标准的一部分,但在 JS 对象文字中是允许的。

为什么你必须两次提到所有这些?当你说“然后像这样使用它”
2021-03-17 03:06:06
@nnnnnn 两者之间的区别非常微妙,但仍然很重要。我已经更新了我的答案,使其更具体。
2021-03-29 03:06:06
当我读到你的回复时,我以为我会投票,但后来你说“它也被称为 JSON”。对象字面量和 JSON 绝对不是一回事,确实,您在提到 JSON 之前的示例不是有效的 JSON。
2021-03-31 03:06:06
我看到更新了 好的。请注意,JSON要求键名用引号引起来。
2021-04-02 03:06:06

它是对象字面量语法的一部分。基本格式为:

var obj = { field_name: "field value", other_field: 42 };

然后您可以通过以下方式访问这些值:

obj.field_name; // -> "field value"
obj["field_name"]; // -> "field value"

您甚至可以将函数作为值,基本上为您提供对象的方法:

obj['func'] = function(a) { return 5 + a;};
obj.func(4);  // -> 9
很棒,因为它给了我搜索和查找更多信息的术语。
2021-04-04 03:06:06