JavaScript——函数的参数传递

函数的参数传递全部采用值传递的方式

1.基本类型和复合类型的参数传递

(1)基本类型
当通过实参调用函数时,传入函数里的并不是实参本身,而是实参的副本。因此在函数中修改参数值(或对参数赋值)并不会对实参有任何影响。
(2)复合类型(易混淆)

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

2.空函数

函数声明中包含了一个参数,但在调用函数的时候没有传入任何参数。
这种形式在java、c等时不允许的,但因为JavaScript会将没有传入实参的参数值自动设为undefined,所以没有语法错误

对于JavaScript来说,函数名就是唯一标识
如果先后定义两个同名的函数,形参并不相同,在java中叫做函数重载(重写),但在js中没有重载,会导致后面的将前面的覆盖。

3.参数类型

js函数声明的参数列表无须类型声明,是作为弱类型语言的特征之一。
(所有弱类型语言所共有的问题)
由于声明函数时,形参无须定义数据类型,会导致在调用函数时可能出现问题。

为解决上述问题,提出了”鸭子类型“:如果弱类型语言的函数需要接受参数,则应先判断参数类型(用typeof),并判断参数是否包含需要访问的属性、方法。只有当这些条件都满足的时候,程序才开始调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值