Files
notes_estom/JavaScript/ecmascript-5/function.md
2022-04-18 20:40:34 +08:00

86 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
函数是这样的一段 JavaScript 代码,它只定义一次,但可能被执行或调用多次。
简单来说,函数就是一组可重用的代码,你可以在你程序的任何地方调用他。
例如下述代码:
```javascript
function fn(){
console.log("this is function");
}
```
## 函数定义
定义函数有两种方式:
- 函数声明方式:
```javascript
function fn(){
console.log("this is function");
}
```
- 字面量方式:
```javascript
var fun = fnction(){
console.log("this is function");
}
```
## 函数调用
定义一个函数并不会自动的执行它。定义了函数仅仅是赋予函数以名称并明确函数被调用时该做些什么。调用函数才会真正执行这些动作。
- 定义一个函数fn:
```javascript
function fn(){
console.log("this is function");
}
```
- 调用函数fn:
```javascript
fn();// 输出字符串 this is function
```
## 函数参数
函数的参数就相当于在函数中使用的变量虽然这个比方不是很准确。JavaScript 中的函数定义并未制定函数参数的类型,函数调用时也未对传入的参数做任何的类型检查。
函数的参数可以分为以下两种:
- 形参: 出现在函数定义文法中的参数列表是函数的形式参数,简称形参 。简单来说,就是定义函数时使用的参数就是形参。
- 实参: 函数调用时实际传入的参数是函数的实际参数,简称实参。 简单来说,就是调用函数时使用的参数就是实参。
> **值得注意的是:** 一般情况下,形参与实参的个数是相同的。但在 JavaScript 中并不强求这一点,在特殊情况下,函数的形参和实参的个数可以不相同。
```javascript
function fn( one, two ){
console.log( one + two );
}
fn( 1, 2 );// 输出 3
```
上述代码中,定义函数 fn 时one 和 two 就是函数的形参;调用函数 fn 时1 和 2 就是函数的实参。
## return 语句
函数还可以包含一个返回语句return。当然这并不是必需的。return 语句使函数可以作为一个值来使用。具体用法如下述代码:
```javascript
function fn( msg ){
return "hello" + msg;
}
// 变量 fun 的值为 hello atguigu
var fun = fn("atguigu");
```
> **值得注意的是:** return 默认情况下返回的是 undefined。
## 预定义函数
JavaScript 预定义了一组函数,又称为全局函数,允许直接使用。
| 函数 | 描述 |
| --- | --- |
| eval( ) | 对一串字符串形式的JavaScript代码字符求值。|
| uneval( ) | 创建的一个Object的源代码的字符串表示。|
| isFinite( ) | 判断传入的值是否是有限的数值。|
| isNaN( ) | 判断一个值是否不是数字值。|
| parseInt( ) | 解析字符串参数,并返回指定的整数。|
| parseFloat( ) | 解析字符串参数,并返回一个浮点数。|
| decodeURI( ) | 对已编码的统一资源标识符(URI)进行解码,并返回其非编码形式。|
| encodeURI( ) | 对统一资源标识符(URI)进行编码并返回编码后的URI字符串。|
### eval() 函数
eval() 函数用于执行以字符串String形式出现的 JavaScript 代码。此函数可以实现动态的执行 JavaScript 代码。具体用法如下述代码:
```javascript
// 定义一个字符串内容为JavaScript代码
var js = "console.log('this is javascript')";
// 通过 eval()函数执行上述内容
eval(js);// 输出 this is javascript
```
### 字符编码与解码
encodeURI() 函数可把字符串作为 URI 进行编码。对以下在 URI 中具有特殊含义的 ASCII 标点符号encodeURI() 函数是不会进行转义的:
```
, / ? : @ & = + $ #
```
decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
decodeURI() 函数和 encodeURI() 函数的具体用法如下述代码:
```javascript
var uri = "http://www.atguigu.com/Web前端开发工程师";
var encode = encodeURI( uri );
// 输出 http://www.atguigu.com/Web%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88
console.log( encode );
var decode = decodeURI( encode );
// 输出 http://www.atguigu.com/Web前端开发工程师
console.log( decode );
```
对以下在 URI 中具有特殊含义的 ASCII 标点符号,可以使用 encodeURIComponent() 函数和decodeURIComponent() 函数。
```javascript
var uri = "http://www.atguigu.com/font-end-developer";
var encode = encodeURIComponent( uri );
// 输出 http%3A%2F%2F www.atguigu.com%2Ffont-end-developer
console.log( encode );
var decode = decodeURIComponent( encode );
// 输出 http://www.atguigu.com/font-end-developer
console.log( decode );
```