IT培训-高端面授IT培训机构
云和教育:云和数据集团高端IT职业教育品牌 全国咨询热线:0371-67988003
课程 请选择课程
    校区 请选择校区
      • 华为
        授权培训中心
      • 腾讯云
        一级认证培训中心
      • 百度营销大学
        豫陕深授权运营中心
      • Oracle甲骨文
        OAEP中心
      • Microsoft Azure
        微软云合作伙伴
      • Unity公司
        战略合作伙伴
      • 普华基础软件
        战略合作伙伴
      • 新开普(股票代码300248)
        旗下丹诚开普投资
      • 中国互联网百强企业锐之旗
        旗下锐旗资本投资

      什么是形参和实参?在Javascript中怎么用?

      • 发布时间:
        2022-11-28
      • 版权所有:
        云和教育
      • 分享:

      在函数内部的代码中,当某些值不能确定的时候,可以通过函数的参数从外部接收进来一个函数可以通过传人不同的参数来完成不同的操作。

      函数的参数分为形参和实参。在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参。当函数调用的时候,同样也需要传递相应的参数,这些参数称为实参。函数的形参是形式上的参数,因为当丽数声明的时候,这个函数还没有被调用,这些参数具体会传过来什么样的值是不确定的。而实参是实际上的参数,在函数被调用的时候它的值就被确定下来了。

      函数形参和实参的具体语法形式如下。

      function 函数名(形参1,形参2...)     //函数声明的小括号里的是形参
        //函数体代码
      }
      函数名(实参1,实参2...);            //函数调用的小括号里的是实参

      一个函数的参数可以有多个,使用逗号分隔即可,也可以没有参数。下面我们通过代码演示函数参数的具体使用。

      function cook(arg)  {
        console.log(arg);
      }
      cook('potato');

      在上述代码中,arg是函数的形参,它类似于一个变量,当函数调用的时候,它的值就是调用时传入的值,即 potato。

      接下来我们再演示如何利用函数求任意两个数之和,具体代码如下。

      function getSum(numl,num2) {
        console.log(numl + num2);
      }
      getSum(13);  
      //输出结果:4
      getSum(38);
         //输出结果:11

      在上述代码中,第4行代码在调用函数时传入了两个实参,分别是1和3,这两个实参对应了函数中的形参num1和num2,然后在第2行对这两个值进行了相加,因此得到的输出结果为4。同理,第5行代码在调用函数时传入了3和8两个实参,因此结果为11。

      多学一招:

      函数的形参可以看做是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到的外部变量。

      function fn(a) {
          a++;
          console.log(a); 
      }
      var x = 10;
      fn(x);
      console.log(x)

      当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。

      function Person(name) {
          this.name = name;
      }
      function f1(x) { // x = p
          console.log(x.name); // 2. 这个输出什么 ?    
          x.name = "张学友";
          console.log(x.name); // 3. 这个输出什么 ?    
      }
      var p = new Person("刘德华");
      console.log(p.name);    // 1. 这个输出什么 ?   
      f1(p);
      console.log(p.name);    // 4. 这个输出什么 ?