我正在编写一个公开以下函数的库
function call(instance, func, arguments) {
return {
call: {
instance: instance,
func: func,
arguments: arguments
}
}
}
Run Code Online (Sandbox Code Playgroud)
名称arguments可以使用吗?它确实是最好的名字,但我不想与内置变量发生冲突.它适用于Node.这适用于所有浏览器和JavaScript环境吗?
编辑:
请注意,上述函数在Node中按预期工作.我想知道这是否会在任何地方都有用.
除非有技术原因,否则我宁愿不重命名.我真的很喜欢这个面向外部的函数和文档来反映这个参数名称,因为返回的对象将被序列化为JSON并用于跨语言.
可以arguments在"草率模式"中使用该名称,但不推荐使用.
在严格模式下禁止使用,如果作者关心代码质量,所有新代码都应该使用.
function a(arguments) {
console.log(arguments);
}
a(1);
// Prints "1"
(function () {
'use strict';
function a(arguments) {
console.log(arguments);
}
a(1);
}());
// Uncaught SyntaxError: Unexpected eval or arguments in strict mode
Run Code Online (Sandbox Code Playgroud)
这类似于命名变量"Object".也许在一些模糊的上下文中使用该名称是有意义的,但通过这样做,您将无法访问全局Object对象和有用的方法Object.keys.同样,通过做出这个糟糕的命名决定,你就不能再操纵arguments对象,这就是JS中的varargs.
为了提高代码的可维护性,最好避免像这样创建滴答时间炸弹.有一个很好的理由说明它不允许在严格的模式下:它可能会给任何想要使用arguments它的人造成痛苦,因为它通常被使用.
| 归档时间: |
|
| 查看次数: |
2095 次 |
| 最近记录: |