Javascript function arguments with "-"
Javascript function arguments with "-"
我遇到了一个奇怪的问题。在我的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
它将其解释为两个变量,file
和name
,其中file
减去name
。
由于这是一个表达式,并且表达式在参数声明中无效,因此函数声明本身将变为无效。
虽然我们可以设计语言,使-
符号在参数声明中不意味着减法,但我们不能在稍后的代码中使用该参数,因为该语言无法区分file-name
和file - name
。其他语言可能有语法来处理这个问题,但javascript没有(它使用object["file-name"]
语法来处理对象属性,但不用于局部变量)。
这就是javascript不允许在变量和函数名称中使用-
符号的原因。
相关文章:
- Fighting with FRP
- issue with FB.Event.subscribe
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- geolocation-marker.js conflict with markerclusterer.js
- Angular 2.0 with JavaScript or TypeScript?
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 使用“+="操作人员
- WebComponentsJS with IE10
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- 指令的模板必须只有一个根元素:With restrict E&替换true
- "日期“;AJAX请求返回的类型值未定义
- Angular 2 with protractorjs Failed:在等待Protractor与page "窗