以下JavaScript语法元素是运算符吗?

时间:2015-01-24 14:04:16

标签: javascript

以下JavaScript语法元素是否为运算符?

. // e.g. myObject.foo;
return // e.g. return 'foo';
[] // e.g. myObject['foo];

在interweb上找到的运营商的定义:

  

...运算符是应用于一个或多个的程序元素   表达式或陈述中的操作数。

这可能意味着return in:

return 'foo';

...是一个运算符,'foo'是操作数。显然这是一个陈述(符合定义)。

2 个答案:

答案 0 :(得分:2)

术语"运算符"可以通过两种方式理解:

  • (通用)一种语言结构,当应用于一组值时,会产生一个新值。在这个一般意义上,是的,点是一个运算符,括号也是如此,但return不是(因为它不会产生任何值)。在命令式语言中,expression以递归方式定义为

    expression = variable | literal | apply operator to expression(s)
    

    这样,表达式中不是变量或文字的所有内容都是运算符。例如,

    a = Math.sin(b[c])
    

    在应用语法中重写

    apply(=, a, 
       apply(<call>, 
          apply(., Math, sin), 
          apply([], b, c)))
    

    显示此处有4个运算符:=,函数调用(()),点和括号。

  • (特定语言)无论特定语言标准如何调用&#34;运算符&#34;。在Javascript中,点和括号不称为运算符,而是property accessors

答案 1 :(得分:1)

不,它们不是运算符,至少与数学运算符不同。它们有时被称为运算符,但它们是语言结构,因为它们不能使用常规值。

.[](在示例中使用)是property accessors

return关键字用于return statement


运算符与一个或多个操作数一起使用。在这种情况下,.不是运算符,因为在它不是操作数之后,它是一个标识符。

[]更类似于运算符,但它是一种语言结构,因为它只适用于某种值。

return关键字不是运算符,因为它不会形成具有值的表达式。