JavaScript思考之二:函数的基本概念
来源:互联网 发布:大班美工区域活动教案 编辑:程序博客网 时间:2024/06/02 01:27
接上文。
3. 函数的参数
3.1 形参与实参
函数就是方法,是一段可执行代码的集合。原则上,函数最好是死板的,只做一件事,并且同一个函数每次做的事情都一样。试着比较下面两个函数。
函数1:
function PrintOneToNine(){
for(var i=1;i<=9;i++){
console.log(i)
}
}
PrintOneToNine();
函数2:
function PrintThisToThat(x,y){
x<y?"":[x,y]=[y,x];
for(var i=x; i<=y; i++){
console.log(i);
}
}
PrintThisToThat(9,1);
你会发现这两个函数都打印了1到9共9个数字,结果是相同的。但函数2更具有可塑性。函数2之所以比函数1强大,是因为我们利用了参数。x和y就是函数2的参数。
函数之所以需要参数,是因为一个函数是经常需要和外部进行通讯的,根据实际需要来处理相同的事情。我们可以把函数想象成是一个面包机,主要任务是提供标准化的烘焙过程,所以不同的点心进去就会出来不同的面包,而不是每次都出来一样的面包。
上面的PrintThisToThat函数定义了2个参数,称之为2个形参。如果只给1个参数(实参),即执行PrintThisToThat(9)会怎么样?undefined.
3.2 参数缺省
可以看出,PrintThisToThat(9)是无法正常执行的。我们可以假设,用户输入PrintThisToThat(9)是想打印0到9这几个数字,那么我们怎么修改这个函数才能做到一样的功能?
function PrintThisToThat(x,y=0){
x<y?"":[x,y]=[y,x];
for(var i=x; i<=y; i++){
console.log(i);
}
}
PrintThisToThat(9);
运行上面这段代码,发现函数可以正常执行。区别在于我们在函数的定义时,同时对参数y进行了初始化赋值。那样,当调用时未提供y参数,则启用初始化的赋值。
3.3 参数在哪儿
还是上面的函数。如果执行PrintThisToThat("A","B")会怎么样呢?
很明显,传入的参数与我们的本意不符。原本我们只想打印两个数之间的数字,现在传过来了两个字母,当然不会处理了。为了提高函数的严谨性,有必要对参数进行验证,验证涉及到参数的类型,值,以及数量。在验证之前,我们需要知道参数在哪儿。
参数在函数体内部的arguments数组中。
function PrintThisToThat(x,y=0){
console.dir(arguments);
x<y?"":[x,y]=[y,x];
for(var i=x; i<=y; i++){
console.log(i);
}
}
PrintThisToThat(6);
PrintThisToThat(6,2);
arguments是一个数组,那么我们就可以利用数组的方法对参数进行校验。- JavaScript思考之二:函数的基本概念
- JavaScript思考之一:函数的基本概念
- JavaScript的基本概念----函数
- JavaScript 基本概念之操作符、语句、函数
- JavaScript基本概念(二)
- JavaScript基本概念(二)
- JavaScript基本概念(二)
- JavaScript基本概念(二)
- JavaScript基本概念--函数
- JavaScript函数基本概念
- YUI, JavaScript 构造函数的再次思考
- 关于Javascript函数的一些思考(一)
- 二、MongoDB的基本概念之文档
- JavaScript内核之基本概念
- javascript之基本概念
- JavaScript 基本概念之数据类型
- Javascript基本概念之数据类型
- javascript 的 继承(二) 之 借用构造函数继承
- 创投日报:11月8日收录投融资项目20起
- TensorFlow笔记:dynamic_rnn
- ORACLE优化
- 第八周项目1
- SpringMvc知识汇总
- JavaScript思考之二:函数的基本概念
- Unity5权威讲解之菜鸟读书笔记(二)
- 数据结构上机实践第10周项目1
- Spring Boot应用Docker打包成镜像
- jsp 输出换行
- 基于jdbc的图书馆借阅系统
- ionic城市选择列表A-Z
- JavaScript排序算法之-理解插入排序算法
- Spark源码分析之cahce原理分析