Javascript 函数重载并使用严格模式

Javascript function overloading and use strict mode

我有一个关于 javascript 的问题,如下所示:

__test(function(a,b,c){"use strict"; ....
__test(function(a,b,c){"use strict"; ....
__test(function(a,b,c){"use strict"; ....
__test(function(a,b,c){"use strict"; ....

如果我们有上面的代码,函数将如何执行?我知道 Javascript 不支持函数重载,但我想知道 use strict 指令是否改变了这种行为。

请参阅 JavaScript 中关于函数重载的回答:Function overloading in Javascript - Best practices。 JavaScript 不支持任何语言版本的重载,因此 "use strict" 编译指示不会更改此行为。

JavaScript不使用函数的签名来标识函数。函数是一种特定类型的对象,和对象一样,实例可以作为参数传递或分配给不同的变量,同时保持相同的实例。这是因为它们是根据它们在内存中的位置来识别的,并且传递的所有内容都是对该实例的内存地址的引用。无论如何引用,每个实例都保持唯一,因此不可能重载函数,因为每个函数声明都会创建一个与任何其他函数无关的新的唯一实例。