javascript - 相同函数写在同一个script标签和写在不同script标签中有什么不同?
高洛峰
高洛峰 2017-04-11 10:17:23
[JavaScript讨论组]

这是写在3个标签的情况,alert出1111

这是写在同一个标签的情况,alert出3333

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
高洛峰

你这不是写在script标签下的问题。而是写在p中啊.

黄舟

你在分开的三个script标签的那个情况里,把运行getName()放到最下面,看看是什么情况。


  1. HTML是从上往下依次解析,碰到了script标签就运行。

  2. 所有script标签共享全局作用域。

  3. 所以,无论是写在同一个标签里还是分开写,下面的都会覆盖上面的

  4. 但是由于你的getName()写在了最上面,在分开写的情况中,这时候下面俩函数都还不存在,所以当然就输出1111了。


最后,为啥你要把script标签放到p里面?

大家讲道理

html读取是从上往下读取的,一旦一个有错误,就会终止,不再读取下面的代码,所以你的第一个图,当然弹出
1111
而script标签包裹的就是一个区域,一个script标签内的变量或者方法并不会被其它区域所获取

而第二个图,下面的方法把上面的方法给覆盖了,就跟你写css一样,假如说先写background:#ccc;
最后在写一个background:#fff;最终的结果肯定是#fff,所以第二个图会弹出3333

PHPz

并没有什么不同,只不过受代码执行的先后顺序影响,同名函数后面的会覆盖掉前面的,分开写的时候,函数声明提前,但因为只执行到第一个函数,后面代码还没加载出来,所以是111,执行到后面代码才把前面的覆盖了。
写在一起的,也因为函数声明提前,后面的代码直接覆盖前面的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号