JS函数的参数处理

一、基本类型和复合类型的参数传递
对于基本类型参数,JavaScript采用值传递方式,当通过实参调用函数时,传入函数里的并不是实参本身,而是实参的副本,因此在函数中修改参数值并不会度实参有任何影响。
复合类型参数的值传递方式:
例:

<script type="text/javascript">
        function changeAge(person)
        {
            person.age = 10;
            document.write("函数执行中person的age值为:"
             + person.age + "<br />");
             person = null;
        }
        var person = {age : 5};
        document.write("函数调用之前person的age的值为:"
         + person.age +"<br />");
         changeAge(person);
         document.write("函数调用之后person的age的值为:"
          + person.age + "<br />");
          document.write("person对象为:" + person);
    </script>

结果:
在这里插入图片描述
(在changeAge()函数中的最后一行,将person对象赋值为null,但changeAge()执行结束时,person依然是一个对象,不是null这说明person本身并未传入到changeAge()函数中,传入的时person的副本;)
上面程序的关键是,复合类型的变量本身并未持有对象本身,复合类型的变量只是一个引用,该引用指向实际的JavaScript对象。
二、空参数
在JavaScript中,调用函数时没有传任何参数是没有语法问题的,会自动将没有传入的实参的参数值自动设置为undefined值(如果想定义两个同名的函数,他们的形参列表并不相同,这也不是函数重载,这种方式会导致后面定义的函数覆盖前面定义的函数)

三、参数类型
JavaScript函数声明的参数列表无须类型声明,但是传入变量如果不包含方法,会导致程序出错;
为了解决这个问题,提出了“鸭子类型”;鸭子类型认为:如果弱类型语言的函数需要接受参数,则应先判断参数类型,并判断参数是否包含了需要访问的属性、方法。只有当这些条件都满足时,程序才开始真正处理调用参数的属性、方法。
例:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值