JavaScript函数中的参数类型

JavaScript是一种弱类型语言,由于声明形参无须定义数据类型,所以导致调用这些函数时可能出现问题。
比如:
 function changeAge(p){
     p.setAge(20);
 }
由于,javascript不需要声明参数类型,所以调用函数时,传入的参数p完全可以是整型变量或者是布尔型变量,这些类型的数据都没有setAge()方法,但程序强制调用该方法,肯定会导致程序出现错误,非正常中止。
为了解决弱类型语言所存在的问题,弱类型语言方面的专家提出了“鸭子类型”的概念。
“鸭子类型”的理论认为:如果弱类型语言的函数需要接受参数,则应先判断参数类型,并判断参数是否包含了需要访问的属性、方法。只有当这些条件都满足时,程序才开始真正处理调用参数的属性、方法。
<script type="text/javascript">
    //定义函数changeAge,函数需要一个参数
    function changeAge(person){
        //首先要求person必须是对象,而且person的age属性为number
        if(typeof person=='object'&& typeof person.age=='number'){
            //执行函数所需的逻辑操作
            document.write("函数执行前person的age值为:"+person.age+"<br/>");
            person.age=10;
            document.write("函数执行后person的age值为:"+person.age+"<br/>");
        }else{
            document.writeln("参数类型不符合"+typeof person+"<br/>");
        }
    }
    //分别采用不同的方式调用函数
    chageAge();
    changeAge("xxx');
    changeAge(true);
    //采用JSON语法创建第一个对象
    p={abc:34};
    changeAge(p);
    //采用JSON语法创建第二个对象
    person={age:20};
    chageAge(person);
</script>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值