2 回答
TA贡献1840条经验 获得超5个赞
结果的话,我就不列了,相信题主自己试过了,下面主要解释下原因:
onload 函数会被调用两次
第一次是你手动调用 onload(3, 4, 5)
触发(实际调用的是 window.onload(1, 2,3))
第二次是事件函数被动触发
至于为什么 onload(3, 4, 5)
先调用,题主可以去 google 一波 js 的事件循环相关主题
下面来解释下为什么 4 次弹出的值分别是 2,3,2,1
首先,一个函数的 length 属性,指的是定义时候参数的数量,也就是我们通常说的形参。因为 onload 定义时的参数是 a,b ,所以两次结果都是 2
arguments.length
指的是,函数实际运行时传的参数,通常叫实参。手动调用onload(3, 4, 5)
时传了 3 个参数,事件触发调用onload
时只传了事件对象,所以只有 1 个参数
TA贡献1825条经验 获得超4个赞
window.onload
是窗口加载完成后的回调,包括脚本JavaScript
所以onload(3,4,5)
是js脚本,必须脚本执行完毕后才会回调window.onload
事件
Function.length是方法定义时,形参的个数,但是不包括
(a,...arg)
这种剩余参数也不包括默认值(a=1)
这种,所以function test(a,...arg){}
这个函数test.length
是1
,function test(a,b=4,c){}
也是1
arguments.length
是方法调用时,实参的个数
添加回答
举报