用于标记匿名函数的Javascript"冒号"?

kno*_*lya 58 javascript function anonymous-function object-literal colon

这段代码也引用了什么?

queryString: function() {

//some code

}
Run Code Online (Sandbox Code Playgroud)

我在WebConsole(Firefox)中对它进行了测试,但它不会执行,因此我认为它不等同于function queryString() {}.

那究竟是什么?

Ale*_*yne 73

你在那里缺少一些代码,但我假设它的一部分是这样的对象声明:

var obj = {
  queryString: function() {
    //some code
  }
};
obj.queryString();
Run Code Online (Sandbox Code Playgroud)

它将一个函数指定为对象文字的属性.它等同于:

var obj = {};
obj.queryString = function() { ... };
obj.queryString();
Run Code Online (Sandbox Code Playgroud)

通常,对象文字语法如下所示:

{ key: value, otherKey: otherValue };
Run Code Online (Sandbox Code Playgroud)

所以这在控制台中不起作用的原因是它没有用{}字符括起来,表示一个对象文字.此语法仅在对象文字中有效.

  • 它不是缺少代码。请阅读标记函数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label#Labeled_function_declarations (2认同)

lun*_*chs 10

这可能是在map/object声明中,如下所示:

var obj = {
    queryString: function() {
        alert('here');
    },
    eggs: function() {
        alert('another function');
    }
};

obj.queryString();
Run Code Online (Sandbox Code Playgroud)


geo*_*yws 8

这是一个标签https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

var i, j;

loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
   loop2:
   for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
      if (i == 1 && j == 1) {
         continue loop1;
      }
      console.log("i = " + i + ", j = " + j);
   }
}

// Output is:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
//   "i = 2, j = 0"
//   "i = 2, j = 1"
//   "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 6

:定义对象及其属性时使用.

var obj = {
   queryString: function() {
      //some code
   }
}
Run Code Online (Sandbox Code Playgroud)

现在obj.queryString是你的功能.