美文网首页
实参和形参

实参和形参

作者: 没头脑很不高兴 | 来源:发表于2017-11-05 20:27 被阅读0次

之前没有注重基础,直接去后面看高级内容,结果是一点儿也看不懂,还耽误了很多时间,现在从基础、细节开始学JavaScript

先看函数的形参和实参

有下面这个函数

  function sum(a,b){
    return a+b
  }
  console.log(sum(1,5))

这个就是一个简单的函数,其中a,b是形参,console里面的1,5是实参



但是实际上参数的运用复杂很多

arguments

第一点,实参的形参的值的个数是可以不相等的
在每个函数内部都有一个隐式的东西,叫做 arguments,实参列表,是一个数组(实际上是长得像数组的对象),用来接收所有的实参、而不用去管形参有多少个、是否能与实参对应。
arguments.length可以返回实参的个数,这样我们就可以用一个循环把实参内的值全部输出。

  function sum(a) {
        for (var i = 0 ; i < arguments.length;  i++){
        console.log(arguments[i])
        }
  }
sum(a,b,c,d)

在这个函数里面,sum.length可以返回形参的个数,注意:这里sum不是一个数组,所以不可以用sum[i]来输出。
当然,这样可以对任意个数求和,而不用提前设置形参的个数

  var result = 0
  function sum(c,d,e){
    for (var i = 0;i<arguments.length;i++){
      result += arguments[i]
    }
    console.log(sum[0])
    console.log(b)
}
  
  sum(1,2,3,4,5,3,2,2,3)

实参和形参的映射关系

如下函数:

function sum(a,b) {
    // arguments[1,2]
    // var a = 1   实参传进来后相当于对形参里面的a和b进行了这样的赋值
    var a = 2  // 重新赋值
    console.log(arguments[0]) //2  表明形参变实参也会变
    arguments[0] = 3 // 对第一个实参重新赋值
    console.log(a) // 3 实参变形参的值也会变
  }
  sum(1,2)

在这里,实参和形参中任何一个变、另一个都会变,但这并不是因为他们是引用值(事实上,它们并不是引用值,而是原始值),而是因为它们之间是映射关系

还有一种特殊情况

如果实参的数量比形参少,如下代码

  function sum(a,b) {
    var b = 2
    console.log(arguments[1])
  }
  sum(1)

这里的输出结果是undefined,说明实参的个数在它出生时就已经定义好了,后面再对形参进行修改,也不会影响到实参

相关文章

  • C++ Primer: Functions

    1. 函数基础 形参和实参实参是形参的初始值. 形参和实参类型要一致, 顺序要对应. (但编译器具体按什么顺序求值...

  • 函数闭包

    定义形式: 传入实参时实参可多于形参也可少于形参 实参列表: Arguments

  • OC内存区域

    c语言中形参和实参 形参 form parameter实参 real parameter出现在函数定义中的...

  • 实参和形参

    实参(argument): 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等,...

  • 实参和形参

    之前没有注重基础,直接去后面看高级内容,结果是一点儿也看不懂,还耽误了很多时间,现在从基础、细节开始学JavaSc...

  • 形参和实参

    实参(argument): 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等,...

  • 形参和实参

    形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参...

  • iOS入门小知识-Swift内外参数名

    形参和实参 以OC为例,在方法的声明中,有不带参的,也有带参的,在调用带参方法的时候,参数可分为形参和实参,形参好...

  • Python的5种传参姿势,花两分钟了解一下

    位置实参 实参和形参的位置是关联对应的。一个实参对应一个相应位置的形参。 ​关键字实参 实参以 key=value...

  • c语言函数

    [if !supportLists]1.[endif]值传递:(单向传递实参->形参)关于函数调用过程中形参和实参...

网友评论

      本文标题:实参和形参

      本文链接:https://www.haomeiwen.com/subject/ceehmxtx.html