我正在学习JavaScript,在浏览jQuery库时,我看到:
(冒号)被大量使用。这在JavaScript中用于什么?
// Return an array of filtered elements (r)
// and the modified expression string (t)
return { r: r, t: t };
答案 0 :(得分:225)
var o = {
r: 'some value',
t: 'some other value'
};
在功能上等同于
var o = new Object();
o.r = 'some value';
o.t = 'some other value';
答案 1 :(得分:82)
此外,冒号可用于标记语句。例如
var i = 100, j = 100;
outerloop:
while(i>0) {
while(j>0) {
j++
if(j>50) {
break outerloop;
}
}
i++
}
答案 2 :(得分:66)
你们忘记了冒号也用在三元运算符中(虽然我不知道jquery是否将它用于此目的)。
三元运算符是if / then语句的表达式形式(表达式返回值)。它的使用方式如下:
var result = (condition) ? (value1) : (value2) ;
三元运算符也可以用来产生副作用,就像if / then一样,但这是非常糟糕的做法。
答案 3 :(得分:41)
':'基本上是键值对的分隔符。在您的示例中,它是一个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 Object Notation),它在AJAX调用中很有用,因为它紧凑且可以快速解析服务器端语言,Javascript可以轻松地将JSON字符串反序列化为对象。
// The parenthesis '(' & ')' around the object are important here
var o = eval('(' + "{key: \"value\"}" + ')');
如果密钥包含某种特殊字符或空格,您也可以将其放在引号内,但我不建议这样做,因为它只会让事情更难处理。
请注意,JavaScript语言中的JavaScript Object Literal Notation与邮件传递的JSON标准不同。 2之间的主要区别在于函数和构造函数不是JSON standard的一部分,但在JS对象文字中是允许的。
答案 4 :(得分:17)
它是对象文字语法的一部分。基本格式为:
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
答案 5 :(得分:13)
它可用于列出变量中的对象。此外,它在if句子的简写中使用了一点点:
var something = {face: 'hello',man: 'hey',go: 'sup'};
并称之为
alert(something.man);
也是if句:
function something() {
(some) ? doathing() : dostuff(); // if some = true doathing();, else dostuff();
}
答案 6 :(得分:10)
让我们不要忘记switch语句,其中在每个“case”之后使用冒号。
答案 7 :(得分:8)
这些通常是在JavaScript中使用冒号':'的情况
1-声明和初始化对象
extensions::lastError:133 Unchecked runtime.lastError while running identity.launchWebAuthFlow: Authorization page could not be loaded.
2-设置标签(不建议使用,因为它会导致复杂的控制结构和Spaghetti代码)
var Car = {model:"2015", color:"blue"}; //car object with model and color properties
3-在Switch语句中
List:
while(counter < 50)
{
userInput += userInput;
counter++;
if(userInput > 10000)
{
break List;
}
}
4-在三元运算符中
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";
}
答案 8 :(得分:7)
这是JSON或JavaScript Object Notation。这是描述对象或哈希映射的快速方法。冒号之前的东西是属性名称,冒号之后的东西是它的值。所以在这个例子中,有一个属性“r”,其值是变量r中的任何值。同样适用于。
答案 9 :(得分:3)
我之前做过的一个可能对某些人有帮助的愚蠢错误。
请记住,如果您在此类事件中使用“:”,则值不会更改
var ondrag = (function(event, ui) {
...
nub0x: event.target.offsetLeft + event.target.clientWidth/2;
nub0y = event.target.offsetTop + event.target.clientHeight/2;
...
});
因此“nub0x”将在发生的第一个事件中初始化,并且永远不会更改其值。但是“nub0y”将在下一次活动中发生变化。
答案 10 :(得分:0)
冒号在JavaScript中的另一种用法是重命名变量,即:
const person = {
nickNameThatIUseOnStackOverflow: "schlingel",
age: 30,
firstName: "John"
};
const { nickNameThatIUseOnStackOverflow: nick } = person; // I take nickNameThatIUseOnStackOverflow but want to refer it as "nick" from now on.
nick = "schling";
如果您使用第三方库返回的值具有要在代码中重命名的笨拙/长变量名,这将很有用。