为了账号安全,请及时绑定邮箱和手机立即绑定

原生js中的onload事件传参问题,这段代码依次弹出什么以及为什么会是这样?

原生js中的onload事件传参问题,这段代码依次弹出什么以及为什么会是这样?

www说 2019-05-22 21:41:49
window.onload=function(a,b){alert(onload.length);alert(arguments.length);}onload(3,4,5);
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

结果的话,我就不列了,相信题主自己试过了,下面主要解释下原因:
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个参数
                            
查看完整回答
反对 回复 2019-05-22
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

window.onload是窗口加载完成后的回调,包括脚本JavaScript所以onload(3,4,5)是js脚本,必须脚本执行完毕后才会回调window.onload事件
Function.length是方法定义时,形参的个数,但是不包括(a,...arg)这种剩余参数也不包括默认值(a=1)这种,所以functiontest(a,...arg){}这个函数test.length是1,functiontest(a,b=4,c){}也是1
arguments.length是方法调用时,实参的个数
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号