Javascript函数参数与" - "

时间:2014-11-04 06:27:43

标签: javascript syntax

我遇到了一个奇怪的问题。在我的js文件中,当我用参数编写一个函数时,其中一个是'文件名'

function fileSize(id, file-name) {
  // some code
}

这给了我一个错误,但当我将参数名称更改为" file_name"时,错误消失了。

function fileSize(id, file_name) {
  // some code
}

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:4)

在JavaScript中,标识符名称中不能包含-,但允许使用_。引自MDN

  

JavaScript标识符必须以字母,下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。由于JavaScript区分大小写,因此字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。

     

从JavaScript 1.5开始,您可以在标识符中使用ISO 8859-1或Unicode字母,例如å和ü。您还可以将\ uXXXX Unicode转义序列用作标识符中的字符。

因此,只允许使用_$特殊字符。

答案 1 :(得分:0)

在javascript中,减法运算符使用-标记。因此,当解析器遇到:

file-name

它将其解释为两个变量filename,从name中减去file

由于这是一个表达式,并且表达式在参数声明中无效,因此函数声明本身变为无效。

虽然我们可以设计语言,使得-符号并不意味着在参数声明中减去时我们不能在代码中使用该参数,因为没有办法使用该语言区分file-namefile - name。其他语言可能有语法来处理这个问题,但javascript没有(对于使用object["file-name"]语法的对象属性,但对局部变量没有)。

这就是javascript在变量和函数名称中禁止-符号的原因。