js执行顺序总结
2024-08-27 03:58:14
参考博文: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>
最新文章
- git使用学习
- jquery 中的 offset()
- HDU 4913 Least common multiple(2014 Multi-University Training Contest 5)
- Linux 的shell 字符串截取很有用。有八种方法。
- tiny210裸机第1课(启动原理)
- codeforces 653D D. Delivery Bears(二分+网络流)
- Json-lib - java.util.Date 转换问题
- Transaction的理解
- asdasd
- 深入 CSocket 编程之阻塞和非阻塞模式
- Java Timer及TimerTarsk(摘自网络)
- powershell 统计AD中所有计算机及对应的操作系统信息
- Ubuntu移除mysql后重新安装
- 分布式缓存Hazelcast案例一
- javascript 函数后面有多个小括号f( )( )( )...
- spring boot项目基本结构
- 关于Git安装和操作中可能碰到的问题
- 2.18 C++类与static关键字
- SPA项目中,404页面 和 登陆页面 对应的路由,应该怎样控制?
- 浅谈 volatile 的实现原理
热门文章
- iframe+json
- splay模板整理
- 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道
- [Codeforces Round #351 Div. 2] 673A Bear and Game
- Union和Concat的区别,以及它们的速度 (C# Linq)
- configurationmanager.getsection usage example.
- poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
- 基于c语言中调试工具的用法汇总(不包含gdb)【转】
- 使用python将ppm格式转换成jpg【转】
- Python学习杂记_5_列表常用操作