“:”(冒号)在JavaScript中的作用是什么?

我正在学习JavaScript,在浏览jQuery库时,我看到:(冒号)被大量使用。这在JavaScript中有什么用?

// Return an array of filtered elements (r)
// and the modified expression string (t)
return { r: r, t: t };
185862 次浏览
var o = {
r: 'some value',
t: 'some other value'
};

在功能上等同于

var o = new Object();
o.r = 'some value';
o.t = 'some other value';

这就是JSON,即JavaScript对象表示法。这是一种描述对象或哈希映射的快捷方式。冒号前面的内容是属性名称,冒号后面的内容是其值。所以在这个例子中,有一个属性“ R ”,它的值是变量R中的值。T也一样。

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

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

':'基本上是键值对的分隔符。在您的示例中,它是一个JavaScript对象文字符号。

在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 Object Notation),它在Ajax调用中非常有用,因为它在服务器端语言中解析起来紧凑而快速,并且JavaScript可以轻松地将JSON字符串解序列化为对象。

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

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

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

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

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

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

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

此外,冒号还可用于标记语句。比如说

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


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


}

让我们不要忘记switch语句,其中在每个“ case ”后面使用冒号。

它可用于列出变量中的对象。此外,它还在if语句的速记中使用了一点:

var something = {face: 'hello',man: 'hey',go: 'sup'};

像这样称呼它。

alert(something.man);

还有if语句:

function something() {
(some) ? doathing() : dostuff(); // if some = true doathing();, else dostuff();
}

这些通常是在JavaScript中使用冒号“:”的场景

1-声明和初始化对象

var Car = {model:"2015", color:"blue"}; //car object with model and color properties

2-设置标签(不推荐,因为这会导致复杂的控制结构和意大利面条式代码)

List:
while(counter < 50)
{
userInput += userInput;
counter++;
if(userInput > 10000)
{
break List;
}
}

3-IN开关语句

switch (new Date().getDay()) {
case 6:
text = "Today is Saturday";
break;
case 0:
text = "Today is Sunday";
break;
default:
text = "Looking forward to the Weekend";
}

4进三元运算符

document.getElementById("demo").innerHTML = age>18? "True" : "False";

不久前我犯的一个愚蠢的错误可能会帮助一些人。

请记住,如果您在这样的事件中使用“:”,该值将不会更改

var ondrag = (function(event, ui) {
...


nub0x: event.target.offsetLeft + event.target.clientWidth/2;
nub0y = event.target.offsetTop + event.target.clientHeight/2;


...
});

因此,“ nub0x ”将使用发生的第一个事件进行初始化,并且永远不会更改其值。但在接下来的事件中,“ nub0y ”将会改变。

JavaScript中冒号的另一种用法是重命名变量,即:

const person = {
nickNameThatIUseOnStackOverflow: "schlingel",
age: 30,
firstName: "John"
};
let { nickNameThatIUseOnStackOverflow: nick } = person; // I take nickNameThatIUseOnStackOverflow but want to refer it as "nick" from now on.
nick = "schling";

如果您使用的第三方库返回的值具有您希望在代码中重命名的笨拙/冗长的变量名,这将非常有用。