摘要:为什么结果是,而不是对于函数来说,实参和形参是一一对应的,即,我们的代码只要求参数运算,那么结果自然是。为什么不会出错因为当我们不给函数传递这个参数的时候,这个参数为,这时候,为,因为转换为数值类型之后是。
js中怎么定义一个函数?
// 定义一个函数,求出参数中的最小值 function min(a,b,c,d...) { //函数的代码 }上面的函数怎么调用?
min(1,2,3,4,5,6,7...);定义一个求两个数中最小值的函数
function min(a, b) { return a>b? b:a; } 调用 min(1,2);
1 函数的形参是什么?
函数的形参是定义该函数时,你设置的函数参数个数
2 min函数的形参有几个?
2个,a和b
3 min函数的实参有几个?
调用函数时传递几个就是有几个,上面调用时,我们传递了 1和2 ,那么实参个数就是两个
function min(a, b) { return a>b? b:a; } var result=min(1,2,-1,4) console.log(result) //输出 1
以上代码说明,我们可以传递的参数大于形参个数,且不会出错。
为什么结果是1,而不是-1?
对于函数来说,实参和形参是一一对应的,即a=1,b=2,我们的代码只要求a,b参数运算,那么结果自然是1。
答案是,我们的另外两个参数被放在了函数的arguments中,我们来看看arguments是个什么
function min(a,b) { console.log(arguments); return a>b? b:a; } var result=min(2,6,90,10) console.log(result) //输出 2
原来我多传的参数在arguments中。
实参有多少个,只要调用 arguments.length即可,当前有4个
函数的形参个数能不能知道?
当然可以 , 形参个数就是 min.length
arguments看着像是个数组,不过,它可并不是一个数组哦,它是个object类型的,
怎么取到所有的参数,就不言而喻了
for(var i in arguments){ console.log(arguments[i]) }
说了这么半天,这玩意儿有啥用处?
//两个数字中的最小值 function min(a,b){ return Math.min(a,b); } min(1,2); //四个数字中的最小值 function min(a, b, c, d){ return Math.min(a,b,c,d); } min(1, 2,3,4); //6个数字中的最小值 function min(a, b, c, d,e,f){ return Math.min(a, b, c, d,e, f); } min(1, 2,3,4,5,6); //n个数字中的最小值 function min(a, b, c, d,e,f,...n){ return Math.min(a, b, c, d,e, f,...n); } min(1, 2,3,4,5,6,...n); //随着我们要比较的数字的增多,我的函数形参数目也越来越多, //有了arguments这个对象,形参数目不就可以不写了么,像这样 function min(){ var res=arguments[0] for(var i in arguments){ if(i==0) continue; res=res>arguments[i]?arguments[i]:res; } return res; } min(1, 2,3,4); //代码更精简点,还可以这样 function min(){ return Math.min.apply(this,arguments); } min(1, 2,3,4,-1,2,0-3);//-3那么我们可以少传么?
function min(a, b) { return a>b? b:a; } var result=min(1) console.log(result) //输出 1
以上代码说明,我们可以传递的参数小于形参个数,且不会出错。
为什么不会出错?因为当我们不给min函数传递 b 这个参数的时候,b这个参数为 undefined,这时候,a>undefined 为false,因为b转换为数值类型之后是 NaN。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107152.html
摘要:事实上,满足一定条件的对象都能被方法转换成数组。继承于的很大原因是不需要这四个方法。而在非严格模式下,两个会互相影响。数组与类数组对象数组具有一个基本特征索引。这是一般对象所没有的。是利用对象的键值对存取数据,而却是利用数组的索引。 1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象。代表传给一个function的参数列表。 我们先用一个例子直观了...
摘要:事实上,满足一定条件的对象都能被方法转换成数组。继承于的很大原因是不需要这四个方法。而在非严格模式下,两个会互相影响。数组与类数组对象数组具有一个基本特征索引。这是一般对象所没有的。是利用对象的键值对存取数据,而却是利用数组的索引。 1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象。代表传给一个function的参数列表。 我们先用一个例子直观了...
摘要:以上简单总结了下对执行上下文和变量对象的理解,主要在于记录总结一下学习成果,目前文章的水平实在不敢谈分享。 执行上下文(Execution Context) 文章同步到github javaScript中的执行上下文和变量对象 JavaScript代码执行的过程,包括编译和执行两个阶段,编译就是通过词法分析,构建抽象抽象语法树,并编译成机器识别的指令,在JavaScript代码编译阶段...
摘要:参数引用函数的上下文,函数上下文来自于等面向对象语言,中的依赖于函数声明。没有重载函数没有签名,因为其参数是由包含零或多个值的数组来表示的。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。 1 函数参数 函数的实参和形参个数可以不等,之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪...
摘要:参数引用函数的上下文,函数上下文来自于等面向对象语言,中的依赖于函数声明。没有重载函数没有签名,因为其参数是由包含零或多个值的数组来表示的。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。 1 函数参数 函数的实参和形参个数可以不等,之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪...
阅读 1795·2023-04-26 01:55
阅读 1059·2021-09-30 09:47
阅读 1654·2019-08-30 15:54
阅读 711·2019-08-30 15:53
阅读 668·2019-08-30 15:52
阅读 1105·2019-08-30 15:44
阅读 2385·2019-08-30 14:06
阅读 1029·2019-08-29 16:39