Javascript function arguments with "-"

Javascript function arguments with "-"

本文关键字:quot with function arguments Javascript      更新时间:2023-09-26

我遇到了一个奇怪的问题。在我的js文件中,我写了一个带有参数的函数,其中一个参数是"文件名"

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

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

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

那为什么会发生这种事呢??

在JavaScript中,标识符名称中不能有-,但允许有_。MDN、报价

JavaScript标识符必须以字母、下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。因为JavaScript是区分大小写的,所以字母包括字符";A";通过";Z";(大写)和字符";a";通过";z";(小写)。

从JavaScript1.5开始,您可以在标识符中使用ISO8859-1或Unicode字母,如å和ü。您也可以使用''uXXXX Unicode转义序列作为标识符中的字符。

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

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

file-name

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

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

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

这就是javascript不允许在变量和函数名称中使用-符号的原因。