《悟透javascript》学习笔记:四、函数的魔力
来源:互联网 发布:monkey mac环境搭建 编辑:程序博客网 时间:2024/04/29 15:06
引言
JavaScript的代码就只有 function 一种形式,function 就是函数的类型。也许其他编程语言还有 procedure 或 method 等代码概念,但在 JavaScript 里只有 function 一种形式。当我们写下一个函数的时候,只不过是建立了一个function类型的实体而已。
函数类型
1. 定义型函数,如下:
<script language="javascript">
function func(){
alert("hello");
}
func();
</script>
2. 参数型函数,如下:
<script language="javascript">
func = function(){
alert("hello");
}
func();
</script>
预编译
想想下下面的代码,然后执行看结果
<script language="javascript">
function func(){
alert("hello");
}
func();
function func(){
alert("hi~~");
}
func();
</script>
上面的代码,结果两次都弹出“hi~~”,这是为什么?原来,JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。也就是说,在第一次调用func之前,第一个函数语句定义的代码逻辑,已被第二
个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。(这实际上就是因为只有一个函数变量,却多次赋值,所以当然只会保留最后一次的赋值了)
上面的情况出现的前提是js必须在同一代码快中,如果两个同样的函数在不同的代码块中就不会出现上面的状况了,如下:
<script language="javascript">
function func(){
alert("hello");
}
func();
</script>
<script language="javascript">
function func(){
alert("hi~~");
}
func();
</script>
试一试
1. 先用脑袋运行出结果,然后再执行比较
<script language="javascript">
func = function(){
alert("hi~~");
}
func();
function func(){
alert("hello");
}
func();
</script>
2. 先用脑袋运行出结果,然后再执行比较
<script language="javascript">
function func(){
alert("hello");
}
func();
func = function(){
alert("hi~~");
}
func();
</script>
- 《悟透javascript》学习笔记:四、函数的魔力
- 悟透JavaScript-函数的魔力
- 悟透JavaScript - 函数的魔力
- 《悟透JavaScript》学习札记三之函数的魔力
- 悟透JavaScript之函数的魔力
- 悟透JavaScript(李站老师)-函数的魔力
- 研磨JavaScript系列(三):函数的魔力
- javascript学习笔记四:javascript中的函数(对象)
- javascript魔力的经典代码
- javascript魔力的经典代码
- javascript魔力的经典代码
- Javascript 学习 笔记四
- JavaScript学习笔记四
- JavaScript学习笔记----------(四)
- JavaScript学习笔记(四)
- JavaScript学习笔记(四)——函数对象1
- JavaScript学习笔记四——Eval函数
- JavaScript学习笔记四——Eval函数
- 《悟透javascript》学习笔记:三、似类却不是类
- MS SQL Server和MySQL区别
- java 函数参数的传递问题。
- 两年2800亿元中国3g大盘点:2009年3G投资1609亿 3G用户1307万
- android 目录获取
- 《悟透javascript》学习笔记:四、函数的魔力
- 《悟透javascript》学习笔记:五、奇妙的对象
- SQL之九--数据库设计
- 《悟透javascript》学习笔记:六、放下对象
- 关于诚信的问题
- 《悟透javascript》学习笔记:七、对象描述
- 《悟透javascript》学习笔记:八、构造对象
- 《悟透javascript》学习笔记:九、原型毕露
- oracle_sql_练习