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学习笔记-基本概念-函数的更多相关文章

  1. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  2. Javascript学习笔记-基本概念-数据类型

    1.typeof 操作符的返回值: "undefined"——如果这个值未定义: "boolean"——如果这个值是布尔值: "string" ...

  3. Javascript学习笔记-基本概念-语法、关键字和保留字、变量

    语法 1.区分大小写 2.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参数. 命名规则: 第一个字符必须是一个字母.下划线(_)或一个美元符号($): 其他字符可以是字母.下划线.美元 ...

  4. Javascript学习笔记-基本概念-操作符

    1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...

  5. Javascript学习笔记-基本概念-语句

    1.if语句 if (condition) statement1 else statement2 也可以像下面这样把整个if 语句写在一行代码中: if (condition1) statement1 ...

  6. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  7. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  8. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  9. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. linux版本neo4j安装配置教程

    https://blog.csdn.net/weixin_44293236/article/details/89467489

  2. sm4 加解密示例

    int do_crypt(char *outfile) { unsigned ]; int outlen, tmplen; /* Bogus key and IV: we'd normally set ...

  3. 吴裕雄--天生自然python学习笔记:python 用 Open CV 进行人脸识别

    要对特定图像进行识别,最关键的是要有识别对象的特征文件, OpenCV 己内置 了人脸识别特征文件,我们只需使用 OpenCV 的 CascadeClassifier 类即可进行识别 . 创建 Cas ...

  4. logstash nested内嵌字段 field protobuf解码 codec 的解决办法

    logstash nested内嵌字段 field protobuf解码 codec 的解决办法 主要需求 logstash-codec 下https://www.elastic.co/guide/e ...

  5. ORs-4-Enhanced Role of OR Gene Loss (Pseudogenization) in Birds

    Enhanced Role of OR Gene Loss (Pseudogenization) in Birds 1.因为文献已经证明(a)基因缺失和得到对于进化有影响,(b)大的基因家族对进化影响 ...

  6. Apsara Clouder云计算专项技能认证:网站建设-简单动态网站搭建

    一.课程介绍 1.课程目标 了解静态网站和动态网站的区别 掌握动态网站的不同实现方式 在阿里云上如何搭建 wordPress网站以及 wordPress 网站的管理和优化 二.网站搭建的类型 1.网站 ...

  7. Django获取当前时间和Linux系统时间不一致

    配置文件中修改:TIME_ZONE的值改为上海,USE_TZ的值改为False,重启项目即可

  8. QTP 表格的导入导出异常信息 笔记

    0 环境 系统环境:win7 1 操作 1.1 前言 与异常遍历结合 需要表格记录下来(读写) 代码大概跑了一下 若细节有错 请自行更改 1.2 导出 systemutil.Run "D:\ ...

  9. Qt uchar * 转 QImage

    QImage(uchar * data, int width, int height, Format format) QImage(const uchar * data, int width, int ...

  10. ofo小黄车推出车身商业化广告,能自救成功吗?

    ofo终于还是扛不住了!作为之前与摩拜相抗衡的巨头,ofo其实也是最被看好的共享单车企业之一.可惜共享单车行业的窘境,终究不是成为巨头后就能拯救的.摩拜被美团收购后,ofo就成为巨头垂涎的目标.数十亿 ...