<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
//1.页面加载的时候,浏览器会对页面上的或载入的js代码块(或文件)进行扫描,如果遇到定义式函数和显示定义的变量,则对此函数和显示定义的变量进行预编译,处理完成后再由上至下执行;遇到赋值式函数则只是将函数赋值给一个变量,不进行预处理,待调用到的时候才进行处理 f1(); //我是f1方法
//“定义式”函数定义
function f1() {
alert('我是f1方法');
} //“赋值式”函数定义
f2(); //报错,浏览器未对f2进行预处理,则依次执行
//代码报错后,次块中的代码不再向下执行,执行下一个块中的代码
var f2 = function () {
alert('我是f2方法');
};
f2(); //此句代码没有执行 </script>
<!--2.浏览器对每个块或文件进行独立的扫描,然后再对全局的代码进行顺序执行,所以在一个块中是,定义式函数可以在函数调用后定义,但在两个js代码块中时,定义函数所在的块必须在函数被调用的块之前-->
<script type="text/javascript">
f3();//报错
</script>
<script type="text/javascript">
function f3() {
alert('我是f3方法');
}
</script>
<script type="text/javascript">
f3(); //我是f3方法
</script>
<!--3.重复定义的函数会覆盖前面的定义-->
<script type="text/javascript">
f4();//我是第二个f4方法
function f4() {
alert('我是第一个f4方法');
}
f4(); //我是第二个f4方法
function f4() {
alert('我是第二个f4方法');
}
f4(); //我是第二个f4方法
</script>
<!--4.body内部的函数会先于body的onload函数执行-->
<script type="text/javascript">
function f5() {
alert('我是body的onload的f5方法');
}
</script>
<!--5.严格来说,javascript是没有多线程概念的,所有的程序都是单线程依次执行的-->
<script type="text/javascript">
function f6() {
setInterval(function () {
alert('我先调用');
}, 1000);
}
function f7() {
alert('我后调用')
}
f6();
f7();
//先弹出:我后调用
//1秒后弹出:我先调用
//看上去像是f6()与延时程序分两个过程走,但其实,这事javascript的“回调”机制在起作用,类似于操作系统的“中断和响应”---延时程序处设置一个中断,然后执行f7(),待1秒后,再回调f6();
</script>
</head>
<body onload="f5()">
<script type="text/javascript">
alert('我是body内部的代码');
</script>
<input type="button" name="name" value="点击我 " onclick="alert('我是button的点击事件')" />
</body>
</html>

JavaScript代码内部执行顺序的更多相关文章

  1. 《浏览器工作原理与实践》<07>变量提升:JavaScript代码是按顺序执行的吗?

    讲解完宏观视角下的浏览器后,从这篇文章开始,我们就进入下一个新的模块了,这里我会对 JavaScript 执行原理做深入介绍. 今天在该模块的第一篇文章,我们主要讲解执行上下文相关的内容.那为什么先讲 ...

  2. php课程 1-3 web项目中php、html、js代码的执行顺序是怎样的(详解)

    php课程 1-3 web项目中php.html.js代码的执行顺序是怎样的(详解) 一.总结 一句话总结:b/s结构 总是先执行服务器端的先.js是客户端脚本 ,是最后执行的.所以肯定是php先执行 ...

  3. 创建HttpFilter与理解多个Filter代码的执行顺序

    1.自定义的HttpFilter,实现Filter接口 HttpFilter package com.aff.filter; import java.io.IOException; import ja ...

  4. JavaScript程序的执行顺序

    JavaScript程序的执行顺序:同步==>异步==>回调 同步是阻塞模式,异步是非阻塞模式.     同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个 ...

  5. 通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)

    问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...

  6. 关于JavaScript代码的执行效率总结

    Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...

  7. java代码块执行顺序

    父类 public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } stat ...

  8. 2018.11.20-day22 类中代码的执行顺序&组合

    1.类中代码的执行顺序 2.组合

  9. Java基础系列5:Java代码的执行顺序

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.构造方法 构造方 ...

随机推荐

  1. ES基本原理

    Elasticsearch是基于一款高性能的.可扩展的信息检索工具库Lucene构建的强大的搜索引擎,在很多情况,它也被作为NoSql数据库并取得了很好的效果,下面介绍下ES的基本概念,映射到数据库的 ...

  2. 10 | MySQL为什么有时候会选错索引? 学习记录

    <MySQL实战45讲>10 | MySQL为什么有时候会选错索引? 学习记录http://naotu.baidu.com/file/e7c521276650e80fe24584bc9a6 ...

  3. JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )

    1.使用JS获取页面中某个元素的4种方法 1.通过id名获取元素 document.getElementById("id名"); 2.通过class名获取元素 document.g ...

  4. 00.斐波那契数列第n项

    # 斐波那契数列第n项 # 1 1 2 3 5 8 def fib(n): if n <= 2: return 1 else: return fib(n-2)+fib(n-1) def fib2 ...

  5. kafka docker-composer.yml

    使用Docker快速搭建Kafka开发环境 表现力 关注  0.5 2018.05.04 03:00* 字数 740 阅读 25240评论 1喜欢 11 Docker在很多时候都可以帮助我们快速搭建想 ...

  6. spring mvc和spring boot的区别

    spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等 ...

  7. AMROC可视化

    备注 通过修改Filetype来改变输出数据的类型. hdf2tab.sh转换全部数据文件 hdf2tab.sh -m多维数据 <!DOCTYPE html PUBLIC "-//W3 ...

  8. 【leetcode】301. Remove Invalid Parentheses

    题目如下: 解题思路:还是这点经验,对于需要输出整个结果集的题目,对性能要求都不会太高.括号问题的解法也很简单,从头开始遍历输入字符串并对左右括号进行计数,其中出现右括号数量大于左括号数量的情况,表示 ...

  9. Task10.Bert

    Transformer原理 论文地址:Attention Is All You Need:https://arxiv.org/abs/1706.03762 Transformer是一种完全基于Atte ...

  10. linux下将一系列.o文件打包成.a文件

    参考链接:https://www.cnblogs.com/joshtao/p/7380627.html