您的位置:首页 > Web前端 > JavaScript

说说 JavaScript 函数

2017-02-13 14:23 211 查看
函数用 function 关键字声明,后跟一组参数以及函数体。

函数通过函数名来调用。

在函数体中,位于 return 语句之后的任何代码永远不会执行。

一个函数中可以包含多个 return 语句,一般位于 if 条件语句之后。

推荐这样做,要么让函数始终都返回一个值,要么永远不要返回值。这样有利于调试代码。

1 严格模式下对函数的限制

不能把函数命名为eval 或 arguments。

不能把参数命名为eval 或 arguments。

不能出席两个命名参数同名的情况。

2 理解参数

参数再内部是用一个数组表示。函数体内可以通过 arguments 对象来访问这个参数数组,从而获得传递给函数的每一个参数。

可以使用方括号语法来访问 arguments 对象。length 属性表示传递的参数个数:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>arguments.length 方法可以获知有多少个参数传递给了函数</title>
</head>
<body>

<script type="text/javascript">
function howManyArgs(){
console.log(arguments.length);
}

howManyArgs("String",45);//2
howManyArgs();//0
howManyArgs(12);//1
</script>
</body>
</html>


可以利用 arguments 对象,让函数能够接受任意个参数,以实现适当的功能(模拟重载):

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>利用函数能够接受任意参数的能力,实现特定功能</title>
</head>
<body>

<script type="text/javascript">
function doAdd() {
if (arguments.length == 1) {
console.log(arguments[0] + 10);
} else if (arguments.length == 2) {
console.log(arguments[0] + arguments[1]);
}
}

doAdd(10);//20
ce9e
doAdd(30,20);//50
</script>
</body>
</html>


arguments 对象可以与命名参数一起使用。

arguments 对象的值永远与对应的命名参数值保持同步。

没有传递值的命名参数会被自动赋予 undeinfined 值。

ECMAScript 中所有参数传递的都是值。

3 没有重载

ECMAScript 函数没有签名,因为其参数是 arguments 数组对象。因此没有真正的重载。

如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。

通过检查传入函数的参数的类型和数量并作出不同的反应,可以模拟方法的重载(就像上一小节所展示的那样)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: