扫码关注官方订阅号
页面中1pic //a() 加的有()
1pic
成功执行并弹出9 换一种写法:
当我点击a标签成功弹出0.可是仔细看代码只是把一个匿名函数赋给了onclick,如果执行不应该在后面加上()吗
问题2: 《javascript DOM编程艺术》有这一段话,如果js文件在
html页面是顺序加载的(自上而下),但是script标签是异步加载的,即无阻塞并发处理,所以不知道在script中的哪一个文件被先加载,哪一个被后加载~
改成这样可能明显点:
<a href="javascript:;" id="a">click</a> <script> var touch = document.getElementById('a'); touch.onclick = function(){ alert('aaa'); } </script>
因为你的第一个方式是:
<a href="javascript:;" id="a" onclick = "a()">click</a>
可以理解为
touch.onclick = function a(){}
即将onclick事件指向了一个有名函数
而我上面写的是将touch.onclick指向了一个匿名函数,但本质上都是调用函数,所以会触发。
1.元素上的onclick是一个表达式,在你点击的时候会执行这个表达式而已,你在循环中的是赋值,声明onclick的回调函数,这是两个概念。 2.加载可能是不保证顺序的,因为浏览器会并行加载脚本,但是执行一定是顺序执行,并且加载完成之前会阻塞页面渲染HTML代码,至于举例你直接用chrome查看network,查看下timeline就看到了。(defer不讨论)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
html页面是顺序加载的(自上而下),但是script标签是异步加载的,即无阻塞并发处理,所以不知道在script中的哪一个文件被先加载,哪一个被后加载~
改成这样可能明显点:
因为你的第一个方式是:
可以理解为
即将onclick事件指向了一个有名函数
而我上面写的是将touch.onclick指向了一个匿名函数,但本质上都是调用函数,所以会触发。
1.元素上的onclick是一个表达式,在你点击的时候会执行这个表达式而已,你在循环中的是赋值,声明onclick的回调函数,这是两个概念。
2.加载可能是不保证顺序的,因为浏览器会并行加载脚本,但是执行一定是顺序执行,并且加载完成之前会阻塞页面渲染HTML代码,至于举例你直接用chrome查看network,查看下timeline就看到了。(defer不讨论)