Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么会有这样的结果?_Javascript_Return - Fatal编程技术网

Javascript 为什么会有这样的结果?

Javascript 为什么会有这样的结果?,javascript,return,Javascript,Return,我最近看了一段视频,老师演示了javascript代码 alert.call.apply(function(a) {return a}, [1,2]) 结果总是“2”。所以我的问题是:为什么 我找不到返回此结果的任何解释。此代码太聪明了! 但请稍候,以下代码将产生相同的结果: console.log.call.apply(function(a) {return a}, [1,2]) 发生的情况如下:apply()的第一个参数是“this”,第二个是参数列表。然后,它使用这些参数调用函数con

我最近看了一段视频,老师演示了javascript代码

alert.call.apply(function(a) {return a}, [1,2])
结果总是“2”。所以我的问题是:为什么


我找不到返回此结果的任何解释。

此代码太聪明了! 但请稍候,以下代码将产生相同的结果:

console.log.call.apply(function(a) {return a}, [1,2])
发生的情况如下:
apply()
的第一个参数是“
this
”,第二个是参数列表。然后,它使用这些参数调用函数
console.log.call
,逻辑上相当于:

(function(a) {return a}).call(1,2)
这段代码产生相同的结果,并且更容易理解-我们正在对未命名函数使用
call()
call()
的参数是一个“
this
”对象,后跟参数。在本例中,“
this
”是
1
,参数是
2
,因此调用该函数时将
a
分配给
2
(未绑定的函数中不使用
1
)。因此它总是返回
2
,因为它只是返回列表中的第二项

但是,
警报
的作用是什么,为什么我们可以在那里替换任何函数名?嗯,似乎有一个
call()
函数在所有原型之间共享。您可以通过运行

alert.call === console.log.call
true
因此,无论我们使用
alert
console.log
,还是什么都不使用,我们总是使用相同的
call()
函数。

alert.call.apply(函数(a){return a}[1,2])
->
(函数(a){return a;})。调用(1,2)
->
->
->
函数(a){return a;}>2