参考博文: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>

最新文章

  1. git使用学习
  2. jquery 中的 offset()
  3. HDU 4913 Least common multiple(2014 Multi-University Training Contest 5)
  4. Linux 的shell 字符串截取很有用。有八种方法。
  5. tiny210裸机第1课(启动原理)
  6. codeforces 653D D. Delivery Bears(二分+网络流)
  7. Json-lib - java.util.Date 转换问题
  8. Transaction的理解
  9. asdasd
  10. 深入 CSocket 编程之阻塞和非阻塞模式
  11. Java Timer及TimerTarsk(摘自网络)
  12. powershell 统计AD中所有计算机及对应的操作系统信息
  13. Ubuntu移除mysql后重新安装
  14. 分布式缓存Hazelcast案例一
  15. javascript 函数后面有多个小括号f( )( )( )...
  16. spring boot项目基本结构
  17. 关于Git安装和操作中可能碰到的问题
  18. 2.18 C++类与static关键字
  19. SPA项目中,404页面 和 登陆页面 对应的路由,应该怎样控制?
  20. 浅谈 volatile 的实现原理

热门文章

  1. iframe+json
  2. splay模板整理
  3. 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道
  4. [Codeforces Round #351 Div. 2] 673A Bear and Game
  5. Union和Concat的区别,以及它们的速度 (C# Linq)
  6. configurationmanager.getsection usage example.
  7. poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
  8. 基于c语言中调试工具的用法汇总(不包含gdb)【转】
  9. 使用python将ppm格式转换成jpg【转】
  10. Python学习杂记_5_列表常用操作