js执行顺序总结
参考博文:http://www.2cto.com/kf/201401/273825.html
http://www.jb51.net/article/44123.htm
http://zhidao.baidu.com/link?url=BNhBPvi-DaTqZCxQ0CfNsBxNS_mWCAu8XsouLraBAkp36vmq7itYKRqxPDOysTc4wU7QpnwUd28XX6W0puV3j9_hBMN5AtM334E3646K9GK
JavaScript中的代码块是指由<script>标签分割的代码段,可以有多个<script>标签,多个代码块是顺序执行的,所以如下的代码结果会是,先弹出"这是代码块一"的对话框,点击确定之后,才会弹出"这是代码块二"的对话框。
<script type="text/javascript">
alert("这是代码块一");
</script>
<script type="text/javascript">
alert("这是代码块二");
</script>
声明式函数和赋值式函数
Js的函数定义分为两种:声明式函数和赋值式函数,请看如下代码示例。
<script type="text/javascript">
function Fn(){ //声明式函数 } var Fn = function{ //赋值式函数 }
</script>
声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。这也就说明了一个问题,为什么当js函数的调用在在js函数声明之前,是不会报错的,请看代码,结果是显示对话框,"执行了声明式函数"。
<script type="text/javascript">
Fn(); //执行结果:"执行了声明式函数",在预编译期声明函数及被处理了,所以即使函数Fn()的调用放在函数的声明前也能执行。
function Fn() { //声明式函数
alert("执行了声明式函数");
}
</script>
如果是赋值式函数,就会报错,看代码
<script type="text/javascript">
Fn1();//会报错,因为在预处理阶段,不会对赋值式函数进行处理,所以赋值式函 数的调用不能放到赋值式函数的声明之前===0x800a138f - JavaScript 运行时错误: 缺少对象
var Fn1 = function () { //赋值式函数
alert("执行了赋值式函数");
//Fn1();//如果函数的调用放到这里就不会报错了
}
</script>
但是需要注意的一个问题是:我们的声明式函数可以放在函数调用之后,但是对于变量来说,变量的声明和赋值是不能放到变量调用之后的,看代码
<script type="text/javascript">
alert(str); //结果是,弹窗"undefined"
////js在预处理期对变量进行了声明处理,但是并没有进行初始化与赋值,所以导致结果是unfiened的。
var str = "aaa";
</script>
//
大家在看下面的代码下面的例子,感觉对undefined理论的解释是行得通的,我也有点儿不明白了。
<script type="text/javascript">
alert(str);//因为没有定义str,所以浏览器会出错,下面的不能运行
alert("我是代码块一");//没有运行到这里
var test = "我是代码块一变量";
</script>
<script type="text/javascript">
alert("我是代码块二"); //这里有运行到
alert(test); //弹出"undefined"
</script>
js执行顺序总结的更多相关文章
- js执行顺序
我们知道有个全局的 window对象,js的一切皆window上的属性和方法.window上有个window.document属性,记录了整个html的dom树,document是顶层. body 和 ...
- JS执行顺序-函数声明提升、匿名函数、函数表达式
大方向上: JS 是按照 代码块 进行 编译.执行 的. 学习至: 1.变量声明提升 2.新唐的博客 3.js中匿名函数的创建与调用方法分析 4.前端圣经 - <高程三> 5.深入理解变量 ...
- RequireJS 加载 js 执行顺序
初次接触RequireJS 对文档理解不很透彻,自己通过测试测到的执行顺序: 文档结构: |-amaze | -js | -amazeui.js | -jquery.min.js | -main.js ...
- js执行顺序——学习笔记
我们知道有个全局的 window对象,js的一切皆window上的属性和方法.window上有个window.document属性,记录了整个html的dom树,document是顶层. body 和 ...
- js执行顺序<转>
JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的.而且在分析执行同一段代码中,定义式的函数语句会被提取出来优先执行.函数定义执行完后,才会按顺序执行其他代码. 先看看 ...
- JS执行顺序问题
JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的.而且在分析执行同一段代码中,定义式的函数语句会被提取出来优先执行.函数定义执行完后,才会按顺序执行其他代码. 先看看 ...
- js 执行顺序
同步任务 异步任务 同步任务:立即执行 异步任务:进入到异步队列当中(Event Queue)eg:Ajax,SetTimeout,then,SetInterval Event loop 事件循环 T ...
- 小程序js执行顺序
底部tab 有 login/index my/index home/index 操作1>进 login/index 页面, index.js加载以下方法 onLoad页面加载onSh ...
- 关于js执行顺序
http://www.cnblogs.com/sanshi/archive/2011/02/28/1967367.html http://mtnt2008.iteye.com/blog/701981 ...
随机推荐
- KM算法【带权二分图完美匹配】
先orz litble--KM算法 为什么要用KM算法 因为有的题丧心病狂卡费用流 KM算法相比于费用流来说,具有更高的效率. 算法流程 我们给每一个点设一个期望值[可行顶标] 对于左边的点来说,就是 ...
- Jmeter 设置HTTP RPS性能测试模型
其实也挺简单的,主要是刚接触jmeter,记录一下. 1. 首先需要安装jmeter...真是废话... 2. 需要安装JMeterPlugins-ExtrasLibs-1.3.0.zip: JMet ...
- Codeforces Round #304 (Div. 2) A B C 水
A. Soldier and Bananas time limit per test 1 second memory limit per test 256 megabytes input standa ...
- ffmpeg nmb
搞了一个下午的raw bitstream封装无果然后转战mp4box一秒搞定了 优秀啊..
- poj 1743 Musical Theme 后缀自动机/后缀数组/后缀树
题目大意 直接用了hzwer的题意 题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题."主题&qu ...
- 【LA5059】Playing With Stones (SG函数)
题意:有n堆石子,分别有a[i]个.两个游戏者轮流操作,每次可以选一堆,拿走至少一个石子,但不能拿走超过一半的石子. 谁不能拿石子就算输,问先手胜负情况 n<=100,1<=a[i]< ...
- [CODEVS1051]接龙游戏
题目描述 给出了N个单词,已经按长度排好了序.如果某单词i是某单词j的前缀,i->j算一次接龙(两个相同的单词不能算接龙). 你的任务是:对于输入的单词,找出最长的龙. 输入描述 Input D ...
- wap开发杂项1
原文发布时间为:2010-08-31 -- 来源于本人的百度文章 [由搬家工具导入] wap开发全程记忆[CLQ原创 持续更新] 1. 据说手机wap最好都是utf-8字符集,不过gb2312对移动手 ...
- 改变querystring值,然后重定向
原文发布时间为:2009-11-13 -- 来源于本人的百度文章 [由搬家工具导入] 本页面改变querystring值,然后重定向 本页面,避免出现重复querystring。。 如避免出现 www ...
- LeetCode OJ--Word Search **
https://oj.leetcode.com/problems/word-search/ 类似于在棋盘上走步,走过的地方不能再走,每次都可以走当前位置的上.下.左.右,问能不能走出要求的形状来. 深 ...