Javascript学习笔记-基本概念-函数
ECMAScript 中的函数使用function 关键字来声明,后跟一组参数以及函数体。函数的基本语法如下所示:
function functionName(arg0, arg1,...,argN) {
statements
}
函数示例:
function sayHi(name, message) {
alert("Hello " + name + "," + message);
}
调用sayHi()函数的代码如下所示:
sayHi("Nicholas", "how are you today?");
ECMAScript 中的函数在定义时不必指定是否返回值。
function sum(num1, num2) {
return num1 + num2;
}
调用这个函数的示例代码如下:
var result = sum(5, 10);
这个函数会在执行完return 语句之后停止并立即退出。
1、理解参数
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。
ECMAScript 中的参数在内部是用一个数组来表示的。
函数也可以像下面这样重写,即不显式地使用命名参数:
function sayHi() {
alert("Hello " + arguments[0] + "," + arguments[1]);
}
命名的参数只提供便利,但不是必需的。
通过访问arguments 对象的length 属性可以获知有多少个参数传递给了函数。下面这个函数会在每次被调用时,输出传入其中的参数个数:
function howManyArgs() {
alert(arguments.length);
}
howManyArgs("string", 45); //
howManyArgs(); //
howManyArgs(12); //
函数能够接收任意个参数并分别实现适当的功能。
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 10);
} else if (arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); //
doAdd(30, 20); //
arguments 对象可以与命名参数一起使用。
function doAdd(num1, num2) {
if(arguments.length == 1) {
alert(num1 + 10);
} else if (arguments.length == 2) {
alert(arguments[0] + num2);
}
}
arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。
没有传递值的命名参数将自动被赋予undefined 值。
2、没有重载
ECMAScript 函数不能像传统意义上那样实现重载。ECMAScirpt函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可能做到的。
如果在ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
function addSomeNumber(num){
return num + 100;
} function addSomeNumber(num) {
return num + 200;
} var result = addSomeNumber(100); //
Javascript学习笔记-基本概念-函数的更多相关文章
- JavaScript:学习笔记(5)——箭头函数=>以及实践
JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...
- Javascript学习笔记-基本概念-数据类型
1.typeof 操作符的返回值: "undefined"——如果这个值未定义: "boolean"——如果这个值是布尔值: "string" ...
- Javascript学习笔记-基本概念-语法、关键字和保留字、变量
语法 1.区分大小写 2.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参数. 命名规则: 第一个字符必须是一个字母.下划线(_)或一个美元符号($): 其他字符可以是字母.下划线.美元 ...
- Javascript学习笔记-基本概念-操作符
1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...
- Javascript学习笔记-基本概念-语句
1.if语句 if (condition) statement1 else statement2 也可以像下面这样把整个if 语句写在一行代码中: if (condition1) statement1 ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿的JavaScript学习笔记(1——理念)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
随机推荐
- Opencv笔记(十五)——图像金字塔
参考文献 目标 学习图像金字塔 学习函数cv2.pyrUp()和cv2.pyrDown() 原理 当我们需要将图像转换到另一个尺寸的时候, 有两种可能,一种是放大图像,另一种是缩小图像.尽管在Open ...
- Pipe Fitter and the Fierce Dogs
Pipe Fitter and the Fierce Dogs [JAG Asia 2016] 理解题意之后,就是一个非常傻的DP 然后难在理解题意,理解非法状态 #include <bits/ ...
- iOS keychain报错 25293
经过查找发现25293对应的错误是如下,即用户名和密码不正确. errSecAuthFailed = -25293, /* The user na ...
- redis day02 下
位图:是二进制数据(0101101010)2^32 强势点: 01_login :101110(比如:第一天登录,二天没登录) 传统的字符串解决方案中 记录用户登录日期 统计堪忧 01_login_ ...
- js获取当前页面名称
// 取当前页面名称(不带后缀名) function pageName() { var a = location.href; var b = a.split("/"); var c ...
- Lamda过滤替换List元素的属性值
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List; ...
- 基于Redis的Service缓存实现
项目中有使用到缓存,每次需要将缓存代码和业务代码杂糅在一起,以及分散各处的key,严重影响代码的可读性.以下是使用AOP对其简单尝试.直接上代码: 1.定义缓存注解: @Target(ElementT ...
- EXAM-2018-7-24
EXAM-2018-7-24 未完成 [ ] G 签到水题 A J F A:英文字母有2426个 J:注意long long D:Transit Tree Path 我直接套了单源最短路的一个模板,有 ...
- Oracle中的 timestamp 和 timestamp with time zone, timestamp with local time zone
SQL> select dbtimezone, sessiontimezone from dual; DBTIME ------ SESSIONTIMEZONE ---------------- ...
- android五子棋游戏、资讯阅读、大学课程表、地图拖拽检测、小说搜索阅读app等源码
Android精选源码 Android 自动生成添加控件 android旋转动画.圆形进度条组合效果源码 一款很强的手机五子棋app源码 android地图拖拽区域检测效果源码 实现Android大学 ...