-
2020-05-25 11:09:13
定义一个形参有多个的函数,并且定义传入不同数量的实参时,其中的db.collection(collectionName).find(){}方法中的attr,skipNum和pageSize分别指的是什么
find(collectionName,json1,json2,json3){ if(arguments.length==2){ var attr={}; var skipNum=0; var pageSize=0; }else if(arguments.length==3){ var attr=json2; var skipNum=0; var pageSize=0; }else if(arguments.length==4){ var attr=json2; var page=json3.page||1; var pageSize=json3.pageSize||20; var skipNum=(page-1)*pageSize; }else{ console.log('传入参数错误'); } db.collection(collectionName).find(json1,{fields:attr}).skip(skipNum).limit(pageSize); }
调用时不同实参可以起到不同的使用find方法
DB.find('article',{});
DB.find('article',{},{});
DB.find('article',{},{},{page,pageSize});
更多相关内容 -
在c语言函数中,如果形参与实参类型不一致,应该以什么为准呢?
2022-01-03 22:47:38在c语言函数中,如果形参与实参类型不一致,应该以什么为准呢? -
【实例讲解】JS中形参、实参可以不一致
2017-11-24 13:52:26function myFunction() { var x=5; return x;...1.实参与形参个数可以有偏差,不会因为参数不统一而错误。 例1: ? 1 2 3 4 5 6 functionbox(a,b){function myFunction() { var x=5;
补充:JS中带返回值的函数,在函数定义时不体现return x;
}
//正文
1.实参与形参个数可以有偏差,不会因为参数不统一而错误。
例1:
123456functionbox(a,b){
return
a + b;
}
alert(box(
1
,
3
,
5
));
//运行结果:“4”。
//进行的运算为“1+3”,没有用到“5”。
例2:
12345functionbox(a,b,c){
return
a + b+c;
}
alert(box(
1
,
'5'
));
//运行结果:15undefined。
//结果为sring类型。进行的运算1与‘5’的字符连接,再与一个不存在(undefined)的字符连接,结果即为15undefined。
2.JS函数不能重载。
因为“函数重载”靠的就是相同函数名根据参数的不同,匹配特定函数,从而执行函数的过程;而JS函数不再排斥“异形”函数,缺失了辨别相同函数名的不同函数的过程,相同函数名的情况下,JS调用时,只会执行最后一个所调函数。
例3:
12345678910function box(a,b,c){
alert(
'执行了第一个函数,'
+ a +
'+'
+ c +
'='
+(a+c));
}
function box(a,b,c){
alert(
'执行了第二个函数,'
+ a +
'+'
+ b +
'='
+(a+b));
}
alert(box(
1
,
'5'
,
3
));
//执行结果为:执行了第二个函数,1+5=15
//类型为string.
例4:
12345678910function box(a,b,c){
alert(
'执行了第二个函数,'
+ a +
'+'
+ b +
'='
+(a+b));
}
function box(a,b,c){
alert(
'执行了第一个函数,'
+ a +
'+'
+ c +
'='
+ (a+c));
}
alert(box(
1
,
'5'
,
3
));
//执行结果为:执行了第一个函数,1+3=4
//类型为number.
3.函数运用arguments对象,很有特点
arguments对象的使用,很好地解释了支持形参、实参不一致而不出错的原理性问题。
3.1 arguments[index]指定参数值,index为参数的索引
例5:
1234567function box(){
return
arguments[
0
]+arguments[
5
];
}
alert(box(
1
,
2
,
3
,
4
,
5
,
6
));
//执行结果为:7
alert(box(
'Test'
,
'UseCase'
,
3
,
4
,
5
,
6
));
//执行结果为:Test6
//arguments[0]表示第一个参数,arguments[5]表示第六个参数;上面两个执行结果,都反映了,box()函数只用了所需的指定参数,其他参数都被忽略了。
3.2 arguments.length得到参数的个数
例6:
1234567function box(){
return
arguments.length;
}
alert(box(
1
,
2
,
3
,
4
,
5
,
6
));
//执行结果为:6
alert(box(
'Test'
,
'UseCase'
,
3
,
4
,
5
,
6
));
//执行结果为:6
//当需要知道某序列有多少元素时,将其传入该函数,即可知道
3.3 arguments.length的扩展运用
例7:
123function box(){
var sum =
0
;
for
(var i=
0
;i</arguments.length;i++){>
4.一个显而易见的错误(只为下面说明问题)
看了例7,可能会有点迷糊,因而添加例8、例9,都说明了一个问题,参数为函数体提供必要信息,用于可控地实现功能。函数(function:功能)
例8:
1234567function box(a,b){
return
a+b+c;
}
alert(box(
1
,
2
,
3
));
//ReferenceError:c is not defined
alert(box(
1
,
2
));
//ReferenceError:c is not defined
//字面量c未定义
例9:
123456function box(){
return
a+b+c;
}
alert(box(
1
,
2
,
3
));
//ReferenceError:a is not defined
//字面量a未定义
简单比较例2、例4、例8,可以得出这样的结论,JS中的函数体与形参、实参以及形参与实参的关系是:
遵循一个原则:函数实现功能
函数体与形参关系:形参必须满足函数体的必要需求,否则没法进行,即使用了形参未定义的‘字面量’,出错:c is not defined 。
形参与实参关系:实参在形参的标尺下,多出的被拦截而被忽略,缺少的被判断为undefined(不存在),但都不报错。
智能:是说JS函数对多出的实参去粗取精,对少的实参做了适当的处理,没有雷厉加之,使得函数运行更大限度地平稳协调。
-
C语言,函数形参与实参个数不一致问题
2022-05-09 08:59:08C语言,函数形参与实参个数不一致...这就能解释通为什么形参和实参个数不一致,编译能正常通过的问题了。下面是示例代码。 /*parainput.c 文件内容*/ #include <stdio.h> void sum(int a,int b,int c) { intC语言,函数形参与实参个数不一致问题
最近阅读工程代码的时候,同一个函数,不同场景调用时,输入的实参个数不一样,但是编译却没有问题。查看函数的定义,相关的C文件里并没有给形参指定默认值,这就很奇怪了。
最终,发现在函数相关的头文件里有给形参指定默认值。这就能解释通为什么形参和实参个数不一致,编译能正常通过的问题了。下面是示例代码。
/*parainput.c 文件内容*/ #include <stdio.h> void sum(int a,int b,int c) { int result = a + b + c; printf("result = %d\n",result); }
/*parainput.h 文件内容*/ #ifndef _PARAINPUT_H #define _PARAINPUT_H void sum(int a,int b=1,int c=2); #endif
/*main.c 文件内容*/ #include <stdio.h> #include "parainput.h" void test_01(void) { int a = 10; sum(a); return; } void test_02(void) { int a = 10,b = 20; sum(a,b); } void test_03(void) { int a = 10,b = 20,c = 30; sum(a,b,c); } int main(void) { test_01(); test_02(); test_03(); return 0; }
**用G++**进行编译,最终运行结果如下。
result = 13 result = 32 result = 60 -------------------------------- Process exited after 0.006126 seconds with return value 0 请按任意键继续. . .
-
形参和实参,参数类型转换
2020-11-23 20:47:06形参和实参 形参:形式参数,指的就是方法中定义的参数,是没有具体值的,存在的意义就是告诉调用者想要使用该功能就必须给到相应类型的值。 (例如:一个空位置上写着此处有人,实际上没有人) 实参:实际参数,...形参和实参
形参:形式参数,指的就是方法中定义的参数,是没有具体值的,存在的意义就是告诉调用者想要使用该功能就必须给到相应类型的值。
(例如:一个空位置上写着此处有人,实际上没有人)
实参:实际参数,指的是在调用某个方法时,传递的实际的具体的值。
(例如:想要比较两个数的大小,就要给两个具体的值)
public static void main(String[] agrs) { Max(5, 6);// 此时括号中的内容为实参 5,6是具体的值 是实参 int a = 9; // 给a赋值 int b = 3;// 给b赋值 Max(a, b); // 此时的a和b是已经有了具体的值,是实参 int x = 7; // 给x赋值 int y = 8; // 给y赋值 Max(x, y); // 此时的x和y已经有了具体的值,是实参 } /** * 求两个数的最大值 * * @param x 此时定义的参数x为形参 没有具体的值 * @param y 此时定义的参数y为实参 没有具体的值 */ public static void Max(int x, int y) { if (x > y) { System.out.println(x); } else { System.out.println(y); } }
参数类型转换
小类型转大类型的可以,大类型转小类型需要强制转换,否则编译失败
小类型转大类型 public static void main(String[] agrs) { byte a=9; //定义一个byte类型 int b=7; //定义一个int类型 Max(a,b); //byte类型给int给类型传值为小转大可以 } /** * 求两个数的最大值 * * @param x int类型的参数 * @param y int类型的参数 */ public static void Max(int x, int y) { if (x > y) { System.out.println(x); } else { System.out.println(y); } } ------------------------------------------------------------------------- 大类型转小类型 public static void main(String[] agrs) { int a = 9; // 定义一个int类型 int b = 71; // 定义一个int类型 , Max((byte) a, (byte) b); // int类型给byte给类型传值为大转小步可以,需要将int类型强制转换成byte类型 } /** * 求两个数的最大值 * * @param x byte类型的参数 * @param y byte类型的参数 */ public static void Max(byte x, byte y) { if (x > y) { System.out.println(x); } else { System.out.println(y); } }
-
Java——形参和实参的区别
2021-02-12 10:03:14形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存... -
C语言的形参和实参个数不一致问题
2014-12-29 15:51:10这带来的一个问题,实参和形参个数不一致,能编译通过,且有些情况没有警告,并且能链接通过,但是运行时会产生严重的运行时错误。 事实上,实参和形参个数不一致的问题,编译器是做了检查的,虽然这个检查机制不太... -
C语言形参和实参的区别(非常详细)
2019-11-03 17:45:23C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来... -
函数形参和实参
2021-05-13 19:40:56C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。...形参和实参的区别和联系形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量 -
形参和实参的区别
2021-06-03 09:48:21最近在做题的时候被问到了形参和实参的区别,所以在这具体解释一下。 首先什么是形参?什么是实参? 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来... -
形参和实参
2018-06-10 11:11:281、概念形参全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者... -
调用函数时,实参类型可以不和形参类型一样吗?
2018-11-09 18:44:52如果可以隐式转化,那就是可以,int和long是可以隐式转换的,但int*和long*是不可以的,所以编译器会报错 如果机器上int和long占的内存大小相同(一般是相同的),那可以采用类型转换(int*)来完成 指针的话,... -
C++形参与实参
2020-03-07 09:54:25函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,... -
C语言形参和实参
2021-10-13 16:24:11C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处。 形参的解释 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参... -
形参和实参的储存单元是否一致?
2021-11-27 11:21:40先引入一个例题: ...如果占用同一片空间的话,编译时候就不存在实参形参类型不匹配的报错参数传递中,形参值的改变不影响实参的值。 那么就可能会有疑问了 当数组名作为函数的形参是,这个两个. -
一道题带你搞定Python函数中形参和实参问题
2020-12-06 02:32:54昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。人生苦短,我用Python。为了解答大家的这个疑惑,小编在... -
参数中的形参和实参
2021-12-24 16:26:13参数 当遇到不确定的值, 就需要抽取成形参, 在调用的时候, 不同数据传进去 ...一般形参和实参一一对应 单个参数 // 单个参数 function sum(a) { // 求和 var s = 0; // 1 + 2 + 3 + 4 + .... -
C语言函数-形参和实参
2019-04-29 09:34:341.形参和实参的概念 形参(也叫形式参数) 在定义函数名和函数体的时候使用的参数,他没有数据,可以看做一个占位符,只能等到函数被调用时接收传递进来的数据,所以称为形式参数; 实参(也叫实际参数) 在调用时传递给... -
C语言函数实参和形参类型必须一致吗?
2021-11-27 20:38:07C语言调用函数时,实参和形参的个数与对应类型应该保持一致,但并不是必须保持一致。 举个简单的例子:定义的形参为int类型,在调用函数传入实参时传入一个float类型的值,则形参把该float自动转为int类型进行操作。... -
js的函数形参和实参详解
2020-03-29 12:15:10函数参数分为实参和形参。 形参就是在定义函数时,传递给函数的参数,被称为形参。 实参就是当函数被调用时,传给函数的参数,称为实参。 【例1】以下示例中,参数a和b就是形参,而调用函数中的2,3就是实参。 ... -
C语言形参和实参的区别
2020-02-24 11:24:29形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它...形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。 形参和实参的区别和联系 1 . 形参变量只有在函数被调用时才会分配内存... -
JS中形参和实参的区别
2018-10-13 12:53:00JS中形参和实参的区别 from:https://blog.csdn.net/qq_33187168/article/details/50346465 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,... -
形参和实参的特点和区别
2020-08-06 09:34:13形参和实参 C语言函数的参数会出现在两个地方,分别是主函数处和自定义函数处。 例如在main函数中声明的变量并使用它进行运算,此处的变量胃实参;在自写函数的传入参数中使用,此类参数只在本函数中有效,因此命名... -
形参和实参——Java值传递详细说明
2021-06-10 09:48:38因此实参也改变 String以及基本数据类型的装箱类引用类型------形参改变,因实参和形参指向的目标实例对象不一致,因此实参不变 Java的参数传递是值传递,而平常我们在Java中所说的“引用传递”,实际上只是将引用... -
方法的形参和实参
2021-05-06 17:40:06而在调用这个方法时,需要调用者提供与原方法定义匹配的参数(类型,数量,顺序都保持一致),这些实际调用时提供的参数,称为实际参数,检测实参。 例如; int max(int num1,int num2) 参数 num1和num2为形参。 … int... -
形参和实参的定义与区别
2021-09-06 09:50:43实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 形参(parameter):...
-
C51的模块化设计方法首先抛开单片机<em>不</em>谈,简单的说一下C语言的模块化思想, 简而言之就是好多的 .C .H 文件,通过对变量作用范围的定义,利用C中最经典的子函数概念,有效的将大系统分割成小模块,模块之间
-
华为编程开发规范与案例1 逻辑类问题(A类)-指设计、编码中出现的计算正确性<em>和一致</em>性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设
-
Mashibing_High_Concurrency:马士兵高并发,Java基础视频学习关键字:如果<em>不</em>这样做,切换,换一会儿,一会儿,做一会儿,中断,继续,无效 变量作用域:出了这个大括号就再也没有人认识这个变量了。 基本数据<em>类型</em>:四类八种 整体<em
-
前端笔记.zip这个文档包含了HTML/css的一些基础,还有JavaScript中的基础语法、DOM、BOM还有一些学习js中面向对象、<em>和</em>移动web开发、AJAX、jQuery的一些总结,还有些W
-
javasnmp源码-note:学习笔记封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据<em>和</em>方法只让可信的类或者对象操作,对<em>不</em>可信的进行信息隐藏。 继承:它可以使用现有类的所有功能,并在无需重新编