说说 JavaScript 函数
来源:互联网 发布:手机windows live设置 编辑:程序博客网 时间:2024/06/06 13:58
- 函数用 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 doAdd(30,20);//50</script></body></html>
- arguments 对象可以与命名参数一起使用。
- arguments 对象的值永远与对应的命名参数值保持同步。
- 没有传递值的命名参数会被自动赋予 undeinfined 值。
- ECMAScript 中所有参数传递的都是值。
3 没有重载
- ECMAScript 函数没有签名,因为其参数是 arguments 数组对象。因此没有真正的重载。
- 如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
- 通过检查传入函数的参数的类型和数量并作出不同的反应,可以模拟方法的重载(就像上一小节所展示的那样)。
0 0
- 说说 JavaScript 函数
- 说说 JavaScript 函数类型
- 说说 JavaScript 中那些有趣而且强大的高级函数
- 说说JavaScript那些事
- 说说 JavaScript 语句
- 说说 JavaScript Object 类型
- 说说 JavaScript Array 类型
- 说说 JavaScript Date 类型
- 说说JavaScript那些事
- 说说sys_context函数
- 说说createTexturedQuadGeometry这个函数
- 说说std::endl函数
- 说说wavedec2函数
- 说说激活函数
- 说说 JavaScript 垃圾收集原理
- 说说 JavaScript 基本包装类型
- 说说 JavaScript 的事件流
- 说说 JavaScript 的事件对象
- FFmpeg中的时间戳
- PAT甲级1108
- myEclipse去掉html、jsp的预览界面
- swift学习笔记(4)-集合类型
- java多线程中 synchronized和Lock的区别
- 说说 JavaScript 函数
- http请求头详解
- android HorizontalScrollView讲解
- Scrum Master的主要职责有哪些?
- Gradle简介
- Android 反编译 -smali文件对比java文件
- [.Net码农][MVC]使用Html.BeginForm来提交表单
- ReactNative 代码智能提醒(webstorm)
- iOS菜鸟开发记录(02)