精华内容
下载资源
问答
  • 关于Js中函数形参实参的个数问题

    千次阅读 2019-06-08 20:12:57
    关于Js中函数形参实参的个数问题        我们知道,在C语言或者C++中,调用函数时,实参和形参之间的类型、顺序不仅要一一匹配,而且实参和形参的个数也要相等。如果想要达到实参和形参个数...

    关于Js中函数形参与实参的个数问题

           我们知道,在C语言或者C++中,调用函数时,实参和形参之间的类型、顺序不仅要一一匹配,而且实参和形参的个数也要相等。如果想要达到实参和形参个数不相等的效果,那么就得做函数重载。了解过的朋友应该都知道,这样做是很麻烦很麻烦的。

           而在JavaScript里,情况是不是也是这样呢?本文就来讨论一下这个问题,帮助大家答疑解惑。

    先来上一段示例代码

    <body>
    	<h1></h1>
    	<script>
    		var result = document.querySelector('h1');
    		function calculate(a,b) {
    			var c = a + b;
    			return c;
    		}
    		
    		function show(x,y) {
    			var content = x + '+' + y + '=' + calculate(x,y);
    			result.innerHTML = content;
    		}
    		
    		show(2,6);
    	</script>
    </body>
    

    当实参个数和形参个数一样时,想必难不倒大家吧,结果如下:
    在这里插入图片描述
    那么当实参个数 < 形参个数是,结果会是怎样呢?

    show(2);
    

    锵锵锵!
    在这里插入图片描述
    可以看到,虽然实际参数比形式参数少了一个,但控制台并没有报出任何错误信息,证明这是符合js语法的。
    由于函数找不到第二个参数,所以输出undefined(未定义),当undefined类型数据和一个数值类型数据进行运算时,undefined先转换成数值类型NaN(非数值),然后NaN和一个数值类型数据运算,结果还是NaN。

    当实参个数 > 大于形参个数时。。。。。
    嘿嘿,大家来猜猜结果是啥?

    show(2,8,4);
    

    噔噔噔!
    在这里插入图片描述
    没错!函数直接忽视后面多出来的实参啦
    无论你后面加多少个实参,它都只匹配和形参数量相等的前面几个。

    以上结果表明

    调用函数传递的实参与定义函数规定的形参是依次对应的,即第1个实参的值传递给第1个形参,第2个实参的值传递给第2个形参…
    超出形参数目的实参不传递其值。
    如果没有对应的实参(实参数目少于形参数目)传入,其值为undefined。

    引用自 https://www.jianshu.com/p/10fb380a464b

    建议

    调用函数时传递的实参数目可以大于形参数目,但是最好不要小于形参数目。

    原理

    这么说 js 还真是一位慈祥的母亲呢,包容孩子的大小过错hhhhhhhhhhh。
    嗯,没错。。。C语言是位严父(滚)
    为什么 js 能达到如此神奇的效果?
    这个故事嘛emmm
    原来。。。很久很久以前。。。(笑)

    在 js中,参数在内部是用一个数组来表示。函数接收到的始终是这个数组,而不关心数组中包含哪些参数,如果这个数组不包含任何参数也无所谓,包含多个参数也没问题。

    引用自 https://www.jianshu.com/p/7049dab6a9b2
    故事讲完了,谢谢大家
    谢幕~
    熄灯~

    展开全文
  • 可变长参数(*与**的用法)可变长指的是在函数调用阶段传入的值(实参)的个数不固定而实参是用来为形参赋值的,所以对应着,针对溢出的实参,必须有对应的形参来接收可变长的位置参数作用:用来接收溢出的位置实参()...

    可变长参数(*与**的用法)

    可变长指的是在函数调用阶段传入的值(实参)的个数不固定

    而实参是用来为形参赋值的,所以对应着,针对溢出的实参,必须有对应的形参来接收

    可变长的位置参数

    作用:用来接收溢出的位置实参()(溢出的位置实参会被*保存成元组的格式,然后赋值给紧跟其后的实参名)

    为了规范*后面跟args

    def f1(x, y, *args):

    print(x, y, args, type(args))

    f1(1, 2, 3, 4, 5, 6, 7)

    可变长的关键字参数

    用来接收溢出的关键字实参,**会将溢出的关键字实参,保存成字典格式,然后赋值给紧跟其后的变量名(形参)

    为了规范**后面跟kwargs

    def f1(x, y, **args):

    print(x, y, args, type(args))

    f1(x = 1, z = 2, y = 3, q = 6, w = 9)

    *和**也可以用在实参中,*后面的值被打散,赋值

    **后面必须是字典

    混用**与*

    *args必须在**kwargs之前

    命名关键字参数(了解)

    在函数定义阶段,*后定义的参数,如下所示,称之为命名关键字参数

    def f1(x, y, *, z, q): # z,q称之为命名关键字参数

    print(x, y, z, q)

    f1(1, 2, z=111, q=222)

    特点:

    命名关键字必须按照key=value的形式为其传参

    2.组合使用(了解)

    定义顺序

    位置形参 默认形参 *args 命名关键字形参**kwargs

    展开全文
  • 可变长参数(*与**的用法)可变长指的是在函数调用阶段传入的值(实参的个数不固定而实参是用来为形参赋值的,所以对应着,针对溢出的实参,必须有对应的形参来接收可变长的位置参数作用:用来接收溢出的位置实参...

    可变长参数(*与**的用法)

    可变长指的是在函数调用阶段传入的值(实参)的个数不固定

    而实参是用来为形参赋值的,所以对应着,针对溢出的实参,必须有对应的形参来接收

    可变长的位置参数

    作用:用来接收溢出的位置实参()(溢出的位置实参会被*保存成元组的格式,然后赋值给紧跟其后的实参名)

    为了规范*后面跟args

    def f1(x, y, *args):
        print(x, y, args, type(args))
    
    
    f1(1, 2, 3, 4, 5, 6, 7)

    83d7ae27c31e9eb3eb3a5dd6e44aa0e0.png

    可变长的关键字参数

    用来接收溢出的关键字实参,**会将溢出的关键字实参,保存成字典格式,然后赋值给紧跟其后的变量名(形参)

    为了规范**后面跟kwargs

    def f1(x, y, **args):
        print(x, y, args, type(args))
    
    
    f1(x = 1, z = 2, y = 3, q = 6, w = 9)

    4a3fc7da8869719723a7b5d7e47f1a96.png

    *和**也可以用在实参中,*后面的值被打散,赋值

    **后面必须是字典

    混用**与*

    *args必须在**kwargs之前

    命名关键字参数(了解)

    在函数定义阶段,*后定义的参数,如下所示,称之为命名关键字参数

    def f1(x, y, *, z, q):  # z,q称之为命名关键字参数
        print(x, y, z, q)
    f1(1, 2, z=111, q=222)
    

    8b89e5f623d20f8304ceff76b06ab551.png

    特点:

    命名关键字必须按照key=value的形式为其传参

    2.组合使用(了解)

    定义顺序

    位置形参 默认形参 *args 命名关键字形参**kwargs

    展开全文
  • 形参和实参

    2020-12-03 18:01:58
    原博客 本篇博客属于摘抄加部分着重,仅作为自我学习使用 实参 是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数...因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。 形

    原博客
    本篇博客属于摘抄加部分着重,仅作为自我学习使用
    补充:
    实参类型可以是任何类型,如变量、常量、表达式都可以
    但形参不可以,他只可以是变量。函数传递参数时,形参和实参的类型必须一致,否则编译通不过。

    实参 是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等,
    无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
    因此应预先用赋值,输入等办法使实参获得确定值。

    形参
    由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

    形参和实参的区别

    形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。

    实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

    形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

    2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

    3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

    4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。

    而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。

    展开全文
  • 形参和实参 实参(argument): 全称为"实际参数"是在调用时传递给函数参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型量,在进行函数调用时,它们都必须具有确定值, 以便把这些值传送给形参...
  • JS - 函数 - 形参和实参

    千次阅读 2018-06-21 08:22:11
    1. 形参和实参function sum(num1, num2) {  console.log(num1 + num2); } sum(100, 200); //形参和实参个数相等 sum(100, 400, 500, 700); //实参个数多于形参,只取到形参的个数 sum(200); //实参个数少于形参...
  • 函数的形参实参

    2019-09-05 22:48:10
    函数参数分为形参(形式参数)和实参(实际参数) ...2.默认参数 形参和实参可以不一致,如果不想使用默认参数,在调用函数时候可以指定 在这里我们默认y值为2,当mypow(5)时候,默认求...
  • 形参实参的区别

    2020-06-28 10:25:18
    实参(argument): 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都...因而,必须注意实参的个数,类型应与形参一一对应,并且
  • C语言中的形参和实参

    2015-03-04 21:03:06
    ------- ios培训、android培训、期待与您交流! ---------- 一、形参  1. 在定义函数时,函数名右侧括号中的内容即为形参。一个函数可以有形参也可以没有形参。... 形参的个数可以有多个,每个形参之间用逗
  • 函数形参实参个数匹配 function getSum(sum1, sum2) { console.log(sum1 + sum2);... 如果实参的个数和形参的个数一致 则正常输出结果 getSum(1, 2); // 2. 如果实参的个数多于形参的个数 会取到形...
  • C++有默认参数的函数在函数调用时形参从实参获取值,因为实参的个数和形参相同,但有时需要多次调用同一函数,因此C++提供了一个简单的处理办法,给形参一个默认值。这样形参就不必一定要从实参取值了,如下函数...
  • 1.函数的参数 ...2.2位置参数:位置参数也称为必备参数,实参和形参的个数必须保持一致,必须按照指定位置传参,如果位置不对应就指定说明,否则会报错。 def getinfo(name,age): print(name,age) ge...
  • 位置参数(必备参数)关键字参数默认参数不定长参数这一篇我们将来具体讲解位置参数(必备参数)一、位置参数(必备参数)在调用时,实参的个数必须和形参个数一样,并具位置需要对应。我们可以理解为所传的参数必须...
  • C语言入门(8)——形参实参

    千次阅读 2014-06-24 23:48:56
    对于带参数的函数,我们需要在函数定义中指明参数的个数和每个参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,并起一个符合标识符命名规则的名字。例如: #include void print_time(inthour,int...
  • 1.获取实参的个数  获取实参的长度可以直接使用arguments.length,arguments是实参对象,该对象是类数组,有length属性,表示实参的个数,也可以像数组一样通过下标来获取实参的值,例如arguments[0]  function ...
  • 实参: 即实际参数,是在调用时传递给函数的参数,实参可以为常量...所以要注意实参的个数,类型必须与形参一一对应,且实参要预先有确定值。可以理解为形参时函数调用时用于接收参数值的变量。 区别: 形参出现在函
  • 33.函数形参的4大参数

    2019-09-05 12:45:56
    (1)位置参数:形参和实参的个数、位置必须保持一致 def getInfo(name,age) print() 测试: getInfo('Jay Chou',40) getInfo(25,'Sehun') #形参和实参位置不一致 结果如下: (2)默认参数 形参和...
  • 函数的实参和形参、作为值函数

    千次阅读 2019-01-01 22:41:13
    实际上,JavaScript函数调用甚至不检查传入形参的个数。 可选形参 当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值。因此在调用函数时形参是否可选以及是否可以...
  • 在JavaScript函数调用时,可以判断实参的个数是否和形参的个数相等,进而执行一些动作。其中: 1、形参个数: arguments.callee.length 或者 函数名.length ,arguments.callee就是取得函数的名字。 2、实参个数:...
  • 1. 关于形参和实参的说明 ① 在函数被调用之前,形参不占内存 ② 实参可以是常量、变量或表达式 ③ 必须指定形参的类型 ④ 实参与形参类型应一致 ⑤ 实参对形参的数据传递是"值传递",即单向传递2. 函数返回值 ...
  • 实参和形参

    2011-08-10 15:03:00
    <scriptlanguage="javascript"type="text/javascript"> functioncheck(args) { varactual=args.length;//实际传入参数的个数 varexpected=args.callee.length;/...
  • C#(五)-实参和形参

    2018-12-14 16:38:38
    前言 大话设计模式的每个小故事看一遍,再敲一遍,大概什么意思基本都能理解,但是每个模式的代码都会涉及到传参,传来传去的,就没那么好...因此,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确...
  • JS中如何得到形参和实参的个数
  • java有参

    2018-10-18 08:36:00
    一.带参数的方法语法:访问修饰符方法返回值类型方法名称 (参数列表){//方法体注意:每个参数之间用","分割二.形参和实参形参:在方法定义时指定的参数实参:在方法调用时指定的参数三....形参和实参的个数保持一...
  • 微信订阅号:Rabbit_svip 本节目录 形参 实参 arguments的特性 arguments的非标准用法 arguments小案例 ...1.形参 ...上面的代码中,xy就是...在JS中,函数定义并未指定函数形参的类型,甚至不检查形参的个数。 形...
  • 实际上,js函数调用甚至不检查传入形参的个数。当调用函数的时候传入的实参比函数声明的形参个数要少,剩下的形参都将设置为undefined值。因此在调用函数时形参是否可选以及是否可以省略应当保持较好的适应性。为了...
  • 函数装饰器

    2018-09-06 10:56:15
    1.函数的定义 2.函数的求和 3.函数参数的使用  在函数名后面的小括号内填写 参数  多个参数之间使用 , 分隔 定义函数时的变量,叫形参 形参可以任意起名字 ...2.默认参数:形参和实参的个数可以...
  • python函数

    2018-09-05 19:15:29
    #############函数############## 定义函数的变量,叫形参,形参可以任意起名字 (形式上的参数) 在调用函数的时候,传递的的参数叫实参,真正有意义...形参和实参的个数可以不一致(默认形参可以改变) 3.可变...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 243
精华内容 97
热门标签
关键字:

形参和实参的个数