JavaScript之基础-5 JavaScript 函数
2016-03-24 18:27
441 查看
一、JavaScript 函数定义
函数(方法,过程) - 函数(Function),有时也被称为方法(Method),或者过程(Procedure) - 是一段预定义好,并可以被反复使用的代码块,其中可以包含多条可执行语句
- 函数本质上是功能完整的对象
定义函数(方法,过程)的功能
- 使用关键字 function 定义一个函数
- 函数名的定义规则与标识符一直,大小写敏感
- 最简单的函数定义
![](http://s3.51cto.com/wyfs02/M00/7E/00/wKioL1b05HvwsUhiAAC98SfUbko836.png)
定义参数和返回值
- 稍微复杂些的函数可能需要声明执行参数
- 或者使用 return 关键字声明函数的返回值
![](http://s5.51cto.com/wyfs02/M00/7E/03/wKiom1b047ngJkxHAAG0wYapA3M162.png)
二、JavaScript 函数的调用
调用函数时的参数传递 - 若函数定义中指定需要传递参数,那么调用此函数时就必须提供需要的值。 如下函数定义:
![](http://s1.51cto.com/wyfs02/M00/7E/00/wKioL1b05PSCtbzMAABjze6aTzM882.png)
![](http://s4.51cto.com/wyfs02/M01/7E/04/wKiom1b05IThzPrGAAFK5B6vHNs040.png)
得到返回值 - 若函数定义中声明了返回值,那么调用该函数时可以接收此返回值。 如下函数定义:
![](http://s5.51cto.com/wyfs02/M00/7E/00/wKioL1b05n2htlu5AABCWTZl_Ck531.png)
![](http://s5.51cto.com/wyfs02/M01/7E/04/wKiom1b05gXRTKvqAADEDMw5rO4774.png)
函数内调用函数
- 可以在一个函数体内调用其它函数
![](http://s2.51cto.com/wyfs02/M00/7E/00/wKioL1b05xTwWqUSAADKy5IR5k0666.png)
- 函数体内调用其它函数的复杂例子
![](http://s1.51cto.com/wyfs02/M00/7E/04/wKiom1b05vzQptzmAAFIWXglQKc118.png)
三、JavaScript 变量的作用域
作用域概述 - 作用域就是变量与函数的可访问范围,他控制着变量与函数的可见性和生命周期 - 在JavaScript中,变量和函数的作用域分为:
- 函数作用域,只在当前函数内可访问
- 全局作用域,一经定义,在代码中任何地方都能访问
函数作用域中的变量
- 函数作用域中德变量(局部变量)只在当前函数内可访问到,离开此范围就无法访问了
![](http://s5.51cto.com/wyfs02/M02/7E/01/wKioL1b07FyQJ9OSAACoZjZRA3Y585.png)
全局作用域中的变量
- 全局作用域中的变量(全局变量)在代码的任何位置都可以访问到 - 在最外层定义的变量是全局变量
![](http://s1.51cto.com/wyfs02/M02/7E/01/wKioL1b07TqhK06SAAHBazscjFc355.png)
声明提前 - JavaScript 程序在正式执行前,会将所有 var 声明的变量和 function声明的函数,预读到所有作用域的顶部 - 但是对变量的赋值让保留在原位置,随脚本解释执行。 - 比如:
![](http://s4.51cto.com/wyfs02/M02/7E/05/wKiom1b077Sxt5kmAAFBOyOhae0150.png)
- 声明提前仅能将声明提前到所在作用域的顶部
![](http://s1.51cto.com/wyfs02/M00/7E/05/wKiom1b08DXRNkXRAACwQcUKDRg437.png)
等效于:
![](http://s5.51cto.com/wyfs02/M01/7E/01/wKioL1b08PexFaknAADZDBTQtaY905.png)
- 声明提前不但能将变量声明提前,而且还会将函数声明提前
![](http://s3.51cto.com/wyfs02/M01/7E/01/wKioL1b09DOQcVxRAABLoCbpbWI635.png)
等效于:
![](http://s1.51cto.com/wyfs02/M02/7E/05/wKiom1b087aBkoPkAABMb2V7HpM853.png)
- 总结: 今后尽量将变量的声明和函数的声明集中在当前作用域的顶部。
按值传递 - 按值传递指将实参变量的值复制一份儿副本给方法的形参变量 - JavaScript 中为方法传递参数时,都是按值传递的 - 如果传递的是原始类型数据,则在方法内修改参数变量的值,不会影响外部的实参变量 - 比如:
![](http://s3.51cto.com/wyfs02/M00/7E/02/wKioL1b09i_iL19qAAFOvcrhOJU379.png)
函数的作用域 - 与变量类似,函数的作用域也分为"全局作用域(全局函数)"和"函数作用域(局部函数)" - 在最外层定义的函数是全局函数
![](http://s2.51cto.com/wyfs02/M01/7E/05/wKiom1b09svQTu0yAAB_pgoRDss188.png)
- 在一个函数内部定义的函数是局部函数
![](http://s3.51cto.com/wyfs02/M00/7E/02/wKioL1b097SDTOw5AAC_DiOasuo406.png)
三、JavaScript 全局函数
全局函数概述 - ECMAScript 中预定义了一组全局函数,可供用户直接使用
![](http://s3.51cto.com/wyfs02/M01/7E/02/wKioL1b0-y_SJ99FAAO3XQzkLBQ852.png)
encodeURI 与 decodeURI - encodeURI()函数用于对统一资源标示符(URI)进行编码,返回编码后的URI字符串 - decodeURI()函数用于对使用encodeURI()编码之后的字符串进行编码
![](http://s1.51cto.com/wyfs02/M01/7E/02/wKioL1b0_Dvx1OD2AAFMbkGEUzk198.png)
eval函数
- eval()函数用于执行以string形式出现的JavaScript代码
- 使用此函数使JS可以执行动态的JavaScript源代码
![](http://s3.51cto.com/wyfs02/M00/7E/06/wKiom1b0_FSDR94NAAED3sjDpYQ738.png)
总结:本章内容主要介绍了 JavaScript 函数
函数(方法,过程) - 函数(Function),有时也被称为方法(Method),或者过程(Procedure) - 是一段预定义好,并可以被反复使用的代码块,其中可以包含多条可执行语句
- 函数本质上是功能完整的对象
定义函数(方法,过程)的功能
- 使用关键字 function 定义一个函数
- 函数名的定义规则与标识符一直,大小写敏感
- 最简单的函数定义
![](http://s3.51cto.com/wyfs02/M00/7E/00/wKioL1b05HvwsUhiAAC98SfUbko836.png)
定义参数和返回值
- 稍微复杂些的函数可能需要声明执行参数
- 或者使用 return 关键字声明函数的返回值
![](http://s5.51cto.com/wyfs02/M00/7E/03/wKiom1b047ngJkxHAAG0wYapA3M162.png)
二、JavaScript 函数的调用
调用函数时的参数传递 - 若函数定义中指定需要传递参数,那么调用此函数时就必须提供需要的值。 如下函数定义:
![](http://s1.51cto.com/wyfs02/M00/7E/00/wKioL1b05PSCtbzMAABjze6aTzM882.png)
![](http://s4.51cto.com/wyfs02/M01/7E/04/wKiom1b05IThzPrGAAFK5B6vHNs040.png)
得到返回值 - 若函数定义中声明了返回值,那么调用该函数时可以接收此返回值。 如下函数定义:
![](http://s5.51cto.com/wyfs02/M00/7E/00/wKioL1b05n2htlu5AABCWTZl_Ck531.png)
![](http://s5.51cto.com/wyfs02/M01/7E/04/wKiom1b05gXRTKvqAADEDMw5rO4774.png)
函数内调用函数
- 可以在一个函数体内调用其它函数
![](http://s2.51cto.com/wyfs02/M00/7E/00/wKioL1b05xTwWqUSAADKy5IR5k0666.png)
- 函数体内调用其它函数的复杂例子
![](http://s1.51cto.com/wyfs02/M00/7E/04/wKiom1b05vzQptzmAAFIWXglQKc118.png)
三、JavaScript 变量的作用域
作用域概述 - 作用域就是变量与函数的可访问范围,他控制着变量与函数的可见性和生命周期 - 在JavaScript中,变量和函数的作用域分为:
- 函数作用域,只在当前函数内可访问
- 全局作用域,一经定义,在代码中任何地方都能访问
函数作用域中的变量
- 函数作用域中德变量(局部变量)只在当前函数内可访问到,离开此范围就无法访问了
![](http://s5.51cto.com/wyfs02/M02/7E/01/wKioL1b07FyQJ9OSAACoZjZRA3Y585.png)
全局作用域中的变量
- 全局作用域中的变量(全局变量)在代码的任何位置都可以访问到 - 在最外层定义的变量是全局变量
![](http://s1.51cto.com/wyfs02/M02/7E/01/wKioL1b07TqhK06SAAHBazscjFc355.png)
声明提前 - JavaScript 程序在正式执行前,会将所有 var 声明的变量和 function声明的函数,预读到所有作用域的顶部 - 但是对变量的赋值让保留在原位置,随脚本解释执行。 - 比如:
![](http://s4.51cto.com/wyfs02/M02/7E/05/wKiom1b077Sxt5kmAAFBOyOhae0150.png)
- 声明提前仅能将声明提前到所在作用域的顶部
![](http://s1.51cto.com/wyfs02/M00/7E/05/wKiom1b08DXRNkXRAACwQcUKDRg437.png)
等效于:
![](http://s5.51cto.com/wyfs02/M01/7E/01/wKioL1b08PexFaknAADZDBTQtaY905.png)
- 声明提前不但能将变量声明提前,而且还会将函数声明提前
![](http://s3.51cto.com/wyfs02/M01/7E/01/wKioL1b09DOQcVxRAABLoCbpbWI635.png)
等效于:
![](http://s1.51cto.com/wyfs02/M02/7E/05/wKiom1b087aBkoPkAABMb2V7HpM853.png)
- 总结: 今后尽量将变量的声明和函数的声明集中在当前作用域的顶部。
按值传递 - 按值传递指将实参变量的值复制一份儿副本给方法的形参变量 - JavaScript 中为方法传递参数时,都是按值传递的 - 如果传递的是原始类型数据,则在方法内修改参数变量的值,不会影响外部的实参变量 - 比如:
![](http://s3.51cto.com/wyfs02/M00/7E/02/wKioL1b09i_iL19qAAFOvcrhOJU379.png)
函数的作用域 - 与变量类似,函数的作用域也分为"全局作用域(全局函数)"和"函数作用域(局部函数)" - 在最外层定义的函数是全局函数
![](http://s2.51cto.com/wyfs02/M01/7E/05/wKiom1b09svQTu0yAAB_pgoRDss188.png)
- 在一个函数内部定义的函数是局部函数
![](http://s3.51cto.com/wyfs02/M00/7E/02/wKioL1b097SDTOw5AAC_DiOasuo406.png)
三、JavaScript 全局函数
全局函数概述 - ECMAScript 中预定义了一组全局函数,可供用户直接使用
![](http://s3.51cto.com/wyfs02/M01/7E/02/wKioL1b0-y_SJ99FAAO3XQzkLBQ852.png)
encodeURI 与 decodeURI - encodeURI()函数用于对统一资源标示符(URI)进行编码,返回编码后的URI字符串 - decodeURI()函数用于对使用encodeURI()编码之后的字符串进行编码
![](http://s1.51cto.com/wyfs02/M01/7E/02/wKioL1b0_Dvx1OD2AAFMbkGEUzk198.png)
eval函数
- eval()函数用于执行以string形式出现的JavaScript代码
- 使用此函数使JS可以执行动态的JavaScript源代码
![](http://s3.51cto.com/wyfs02/M00/7E/06/wKiom1b0_FSDR94NAAED3sjDpYQ738.png)
总结:本章内容主要介绍了 JavaScript 函数
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树