先看下面两段js程序,先是定义式函数写法:

  1. <script type="text/javascript">
  2. function myfunc(){
  3. alert("第一次调用");
  4. };
  5. myfunc(); //得出的是 第二次调用
  6. function myfunc() {
  7. alert("第二次调用");
  8. };
  9. myfunc(); //得出的是 第二次调用
  10. </script>

接下来是变量式函数写法:

  1. <script type="text/javascript">
  2. var myfunc = function (){
  3. alert("第一次调用");
  4. };
  5. myfunc(); //得出的是 第一次调用
  6. myfunc = function () {
  7. alert("第二次调用");
  8. };
  9. myfunc(); //得出的是 第二次调用
  10. </script>

在定义式函数写法的代码中执行两个方法后的结果是一样的,就等于定义式函数中第一个函数没起到任何作用,得到的都是第二个函数的结果,从结果来看,JavaScript执行顺序不是按顺序一条一条来执行。


在变量式函数写法的代码中执行两个方法后的结果是不同的,从这来看,JavaScript执行顺序是按顺序一条一条来执行的,


从这两个不同函数的表示方法来看,在同一段程序的分析执行中,定义式函数有优先权,定义式函数执行完后,其他语句(包括变量式函数)才顺序执行,那么下面的例子也就不难得出结果了:

  1. <script type="text/javascript">
  2. function myfunc(){
  3. alert("第一次调用");
  4. };
  5. myfunc(); //输出 第二次调用
  6. var myfunc = function (){
  7. alert("第三次调用");
  8. }
  9. myfunc();//输出 第三次调用 上次的结果已经被这次的变量式函数结果覆盖
  10. function myfunc() {
  11. alert("第二次调用");
  12. };
  13. myfunc();//输出 第三次调用  function myfunc()已经不再执行
  14. myfunc = function () {
  15. alert("第四次调用");
  16. }
  17. myfunc();//输出 第四次调用
  18. </script>

结果就不像我们上次分析的那样了,这里的改变就是把两个相同的方法放在两个JavaScript片段里,这时两个方法都得出各自的结果,这里也就说明JavaScript是按一段一段来分析执行的,如下面代码:

  1. <script type="text/javascript">
  2. myfunc();//输出 第一次调用
  3. var myfunc = function (){
  4. alert("第二次调用");
  5. }
  6. myfunc();//输出 第二次调用
  7. function myfunc() {
  8. alert("第一次调用");
  9. };
  10. </script>
  11. <script type="text/javascript">
  12. myfunc();//输出 第三次调用
  13. var myfunc = function (){
  14. alert("第四次调用");
  15. }
  16. myfunc();//输出 第四次调用
  17. function myfunc() {
  18. alert("第三次调用");
  19. };
  20. myfunc();//输出 第四次调用
  21. </script>

贴内牛人总结:


1、<script>中的代码是阻塞式同步下载执行的,当浏览器遇到一个<script>标签会先下载这个标签的代码然后执行。在完成这件事之前不会加载其他任何标签和资源。


2、变量和函数的声明发生在代码解析期,但是,变量赋值发生在运行期,因此反复声明同名函数和变量,最后一次声明的函数被保存下来,直到运行到变量赋值的代码才发生变化。

javascript的执行顺序的更多相关文章

  1. javascript的执行顺序(转载)

    之前从JavaScript引擎的解析机制来探索JavaScript的工作原理,下面我们以更形象的示例来说明JavaScript代码在页面中的执行顺序.如果说,JavaScript引擎的工作机制比较深奥 ...

  2. javaScript代码执行顺序

    javaScript是一种描述型脚本语言,由浏览器进行动态的解析和执行. 页面加载过程中,浏览器会对页面上载入的每个js代码块进行扫描. JavaScript是一段一段的分析执行的,在分析执行同一段代 ...

  3. JavaScript 代码执行顺序

    一.先预处理后执行 在一个JavaScript文件或一个JavaScript代码块的内部,浏览器会先对代码进行预处理(编译),然后再执行. 预处理会跳过执行语句,只处理声明语句,同样也是按从上到下按顺 ...

  4. JavaScript执行顺序分析

    之前从JavaScript引擎的解析机制来探索JavaScript的工作原理,下面我们以更形象的示例来说明JavaScript代码在页面中的执行顺序.如果说,JavaScript引擎的工作机制比较深奥 ...

  5. Javascript动态加载Html元素到页面Dom文档结构时执行顺序的不同

    我们有时会通过ajax动态获取一段Html代码,并且将这段代码通过javascript放到页面的Dom结构中去. 而很多时候通过ajax动态获取的Html代码中也包含javascript代码,有一点需 ...

  6. javascript运行机制之执行顺序详解(转)

    转自http://www.admin10000.com/document/3385.html JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言, ...

  7. javascript 执行顺序详解

    JavaScript是一种描述 型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解javaScript 语言的运行机制,或者简 ...

  8. javascript的预编译和执行顺序

    原文:javascript的预编译和执行顺序 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 代码一<html> ...

  9. JavaScript 运行机制之执行顺序详解

    JavaScript是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解 JavaScript 语言的运行机制 ...

随机推荐

  1. CSS_Bootstrap

    ①BS学习的基础 第一个例子 <!DOCTYPE html> <html lang="en"> <head> <title>Boot ...

  2. js学习--DOM操作详解大全二(window对象)

    一.window - 计时器 1、setTimeout()可以用来在指定的时间之后单次调用函数.setTimeount(f,1000);//一秒后调用函数fclearTimeout();取消函数的执行 ...

  3. fedora23开发环境搭建手册

    chrome安装 [安装chrome教程] nodejs环境搭建 dnf install nodejs dnf install npm sublime text 编辑器安装配置 [fedora安装su ...

  4. 桂电在线-php-提取菜单到配置文件

    新建存储菜单的配置文件 menus.php,并配置菜单 <?php if ( ! defined('BASEPATH')) exit('No direct script access allow ...

  5. Sharepoint 问题集锦 - 配置

    错误 在sharepoint designer中编辑List的表单的时候,提示soap:Server服务器无法处理请求. ---> 值不在预期的范围内. 解释: 这个是由于我在本地测试的时候,使 ...

  6. jackson学习----解析豆瓣的图书信息

      异常一. org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple ...

  7. 在HTML页面布局中,position的值有几种,默然的值是什么

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  8. Umbraco TextBoxFor 如何加样式和属性

    前些天一直在找免费的CMS开源代码,搜索了很多,大都是介绍CMS开源系统的的文章或者是安装的主要流程.再深的也有但是都是很多年前的文章.我一个英语半吊子加MVC零基础只能像缓慢爬行的蜗牛一步步走了.为 ...

  9. hexo 适合前端 geek 的博客

    原文出自:http://www.qiangji.tk/hexo%E9%80%82%E5%90%88%E5%89%8D%E7%AB%AFgeek%E7%9A%84%E5%8D%9A%E5%AE%A2/ ...

  10. sqlplus 打印很乱,而且很短就换行

    set linesize 可以解决 设置行打印的字符长度,set linesize 400解决