首页 > 编程语言 >《悟透javascript》学习笔记:四、函数的魔力

《悟透javascript》学习笔记:四、函数的魔力

时间:2022-12-08 10:39:10浏览次数:47  
标签:function 魔力 javascript 笔记 alert hi func hello 函数


引言

 

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>

标签:function,魔力,javascript,笔记,alert,hi,func,hello,函数
From: https://blog.51cto.com/u_15906220/5920637

相关文章

  • 再读《悟透javascript》之四、贪吃蛇
    前言     贪吃蛇是个很简单的小游戏,但是却很有趣,下面是我用JavaScript写的一个贪吃蛇的代码:  代码如下:   <htmlxmlns="http://www.w3.org/1999/xhtml"><headr......
  • 《悟透javascript》学习笔记:一、前言
    《悟透JavaScript》学习笔记  这是一本很形象生动的书,使我们可以更深地了解了JavaScript。 引言   编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就......
  • 《悟透javascript》学习笔记:二、回归简单
    引言 要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就......
  • 《悟透javascript》学习笔记:三、似类却不是类
    引言 JavaScript没有“类”的概念!这让很多学习过高级语言的人感到很不爽,其实比之于C语言又如何呢?显然JavaScript要比C语言好用很多。 不废话,上代码 <scriptlanguage="j......
  • 再读《悟透javascript》之三、甘露模型
    前言     甘露模型是用于开发基于javascript的类库的,通过它,我们可以以类似C#等面向对象的语言式的模式来开发javascript类库,这将使你的javascript代码变得清晰有条理......
  • 「Note」《一些特殊的数论函数求和问题》学习笔记
    其实可以分成三个独立部分的,但是懒了所以全放一起。Min_25筛Meissel-Lehmer算法拟合平面曲线参考一些特殊的数论函数求和问题朱震霆国家集训队论文2018《一些特......
  • C++的语法 学习笔记1
    C++的语法学习笔记1  C++各种数据类型的默认值数值类型int/double/float/long0char'\0'string"\0"bool0,也就是false  数......
  • docker安装es和kibana, 解决No Living connections error 笔记
    转自:https://blog.csdn.net/weixin_43824526/article/details/1236412461.安装好docker2.安装es(elasticsearch的简写)和kibana,最好是版本一致dockerpullelasticsearch:7.......
  • JavaScript:代码细节和良好编码习惯
    这些细节,与语法无关,仅仅是编写代码时需要注意的最最基本的细节和一些良好编码习惯。注释代码注释代码分为单行注释和多行注释,如下所示:严格区分大小写JS的代码时严格区......
  • JavaScript:严格模式"use strict"
    因为历史遗留问题,JS其实存在很多feature,以及兼容性问题;所以JS在ES5之后,新增了一个严格模式,以区别于普通模式,用来激活新的特性,使得某些代码的执行准确无误;如何开启严格模......