Javascript:的用法有什么不同。and:用于在函数或对象中指定变量的运算符?

Javascript:的用法有什么不同。and:用于在函数或对象中指定变量的运算符?,javascript,function,static-members,Javascript,Function,Static Members,对于在javascript函数中使用静态变量,我发现了两种方法,使用。和:接线员。 使用时。运算符我们必须用“f.variable”指定变量,使用时:我们必须使用“this.variable”。这两个操作符的用法有什么不同 function f(){ f.a += 1; this.b += 1; console.log("f.a: ", f.a); console.log("this.b: ", this.b); } f.a = 0; f:b = 0; 此外,我们不能使用:当在

对于在javascript函数中使用静态变量,我发现了两种方法,使用。和:接线员。 使用时。运算符我们必须用“f.variable”指定变量,使用时:我们必须使用“this.variable”。这两个操作符的用法有什么不同

function f(){
  f.a += 1;
  this.b += 1;
  console.log("f.a: ", f.a);
  console.log("this.b: ", this.b);
}
f.a = 0;
f:b = 0;
此外,我们不能使用:当在其函数之外使用该变量时,如:

function g(){
  f:b = 0; //this works fine.
  var c = f:b; //raises error invalid label.
  console.log(f:b);//but this raises an error missing ')'.
}
使用var创建对象时也是如此

var obj = {
 a: 2,
 b: 3
}
//accessing a and b is done using obj.a & obj.b
//but here
obj:a = 4;
console.log(f.a); // this gives 2
//and similarly using obj:a as rhs value gives error.
这两个运算符实际上是如何使用的

编辑: 创建的这两类变量之间有什么区别。

这是:

f:b = 0;
在表达式语句前被解释为“f”
b=0。“:”在语法中用于将属性名称表达式与其值表达式分开。否则,它不用于引用对象的属性。

这是:

f:b = 0;

在表达式语句前被解释为“f”
b=0。“:”在语法中用于将属性名称表达式与其值表达式分开。否则,它不用于引用对象的属性。

您不应使用
f:b=0符号。语法正确,但含义不正确。使用
var b=0
varo={b:0}对于对象,不应使用
f:b=0符号。语法正确,但含义不正确。使用
var b=0
varo={b:0}对于对象+1,回答正确。我认为标签只能在其定义的范围内访问;这是我的一个假设,因为我很少在代码中使用标签。如果我是一个更好的人,我会创建一个测试来确定答案。我很好奇。有人能告诉我为什么“console.log(f:b)”生成一个错误(缺少“)”?@DanielK。这是因为解析器猜测您想要键入
console.log()f:b…
或类似的内容。换句话说,“f:”在该上下文中没有意义,因此它假设您在开始新语句之前忘记完成上一个表达式。但是它为该函数创建了什么类型的变量,以及它与
f.b=0有何区别@rajan永远不要使用“:”除非您正在编写对象文字。在这种情况下,它是没有意义的。我认为标签只能在其定义的范围内访问;这是我的一个假设,因为我很少在代码中使用标签。如果我是一个更好的人,我会创建一个测试来确定答案。我很好奇。有人能告诉我为什么“console.log(f:b)”生成一个错误(缺少“)”?@DanielK。这是因为解析器猜测您想要键入
console.log()f:b…
或类似的内容。换句话说,“f:”在该上下文中没有意义,因此它假设您在开始新语句之前忘记完成上一个表达式。但是它为该函数创建了什么类型的变量,以及它与
f.b=0有何区别@rajan永远不要使用“:”除非您正在编写对象文字。在这种情况下,它永远没有意义。