我正在尝试通过 Sonar 验证 Javascript 代码,但我对严格模式规则有一些疑问。
我正在验证的规则是关于 "eval" and "arguments" behavior in strict mode 的.
在阅读这个规则描述时,我似乎无法将参数分配给新变量以便稍后或在循环中访问它。
在阅读一些文档时,来自 strict mode on Firefox和 strict mode on IE我发现的规则基本上是(适用于这种情况):
- 我不能将任何变量/函数/等命名为arguments,因为这是一个保留字。
- 参数不能绑定(bind)
但是,上面的示例代码似乎违反了 Sonar 规则:
var args = arguments;
那么,这是误报还是这段代码违反了严格模式?
最佳答案
根据用户的回答和一些研究,我发现这段代码 (var args = arguments;
) 有效,因为它不修改参数,而只是将其分配给另一个变量。
请注意,由于 args
现在指向 arguments
,它也不能被修改。但是可以正常阅读。
更新: Fix will be available在新发布的 Javascript 插件 (1.5) 下。
关于javascript - 在 Javascript 严格模式下,你可以将参数分配给另一个 var 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20127986/