扫码关注官方订阅号
这是写在3个标签的情况,alert出1111
这是写在同一个标签的情况,alert出3333
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
你这不是写在script标签下的问题。而是写在p中啊.
你在分开的三个script标签的那个情况里,把运行getName()放到最下面,看看是什么情况。
script
getName()
HTML是从上往下依次解析,碰到了script标签就运行。
所有script标签共享全局作用域。
所以,无论是写在同一个标签里还是分开写,下面的都会覆盖上面的
但是由于你的getName()写在了最上面,在分开写的情况中,这时候下面俩函数都还不存在,所以当然就输出1111了。
1111
最后,为啥你要把script标签放到p里面?
p
html读取是从上往下读取的,一旦一个有错误,就会终止,不再读取下面的代码,所以你的第一个图,当然弹出1111而script标签包裹的就是一个区域,一个script标签内的变量或者方法并不会被其它区域所获取
而第二个图,下面的方法把上面的方法给覆盖了,就跟你写css一样,假如说先写background:#ccc;最后在写一个background:#fff;最终的结果肯定是#fff,所以第二个图会弹出3333
并没有什么不同,只不过受代码执行的先后顺序影响,同名函数后面的会覆盖掉前面的,分开写的时候,函数声明提前,但因为只执行到第一个函数,后面代码还没加载出来,所以是111,执行到后面代码才把前面的覆盖了。写在一起的,也因为函数声明提前,后面的代码直接覆盖前面的。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你这不是写在script标签下的问题。而是写在p中啊.
你在分开的三个
script标签的那个情况里,把运行getName()放到最下面,看看是什么情况。HTML是从上往下依次解析,碰到了
script标签就运行。所有
script标签共享全局作用域。所以,无论是写在同一个标签里还是分开写,下面的都会覆盖上面的
但是由于你的
getName()写在了最上面,在分开写的情况中,这时候下面俩函数都还不存在,所以当然就输出1111了。最后,为啥你要把
script标签放到p里面?html读取是从上往下读取的,一旦一个有错误,就会终止,不再读取下面的代码,所以你的第一个图,当然弹出
1111
而script标签包裹的就是一个区域,一个script标签内的变量或者方法并不会被其它区域所获取
而第二个图,下面的方法把上面的方法给覆盖了,就跟你写css一样,假如说先写background:#ccc;
最后在写一个background:#fff;最终的结果肯定是#fff,所以第二个图会弹出3333
并没有什么不同,只不过受代码执行的先后顺序影响,同名函数后面的会覆盖掉前面的,分开写的时候,函数声明提前,但因为只执行到第一个函数,后面代码还没加载出来,所以是111,执行到后面代码才把前面的覆盖了。
写在一起的,也因为函数声明提前,后面的代码直接覆盖前面的。