JS函数的参数处理
一、基本类型和复合类型的参数传递
对于基本类型参数,JavaScript采用值传递方式,当通过实参调用函数时,传入函数里的并不是实参本身,而是实参的副本,因此在函数中修改参数值并不会度实参有任何影响。
复合类型参数的值传递方式:
例:
="text/javascript">
function changeAge(person)
{
person.age = 10;
document.write("函数执行中person的age值为:"
+ person.age + "
");
person = null;
}
var person = {age : 5};
document.write("函数调用之前person的age的值为:"
+ person.age +"
");
changeAge(person);
document.write("函数调用之后person的age的值为:"
+ person.age + "
");
document.write("person对象为:" + person);
结果:
文章图片
(在changeAge()函数中的最后一行,将person对象赋值为null,但changeAge()执行结束时,person依然是一个对象,不是null这说明person本身并未传入到changeAge()函数中,传入的时person的副本;)
上面程序的关键是,复合类型的变量本身并未持有对象本身,复合类型的变量只是一个引用,该引用指向实际的JavaScript对象。
二、空参数
在JavaScript中,调用函数时没有传任何参数是没有语法问题的,会自动将没有传入的实参的参数值自动设置为undefined值(如果想定义两个同名的函数,他们的形参列表并不相同,这也不是函数重载,这种方式会导致后面定义的函数覆盖前面定义的函数)
【JS函数的参数处理】三、参数类型
JavaScript函数声明的参数列表无须类型声明,但是传入变量如果不包含方法,会导致程序出错;
为了解决这个问题,提出了“鸭子类型”;鸭子类型认为:如果弱类型语言的函数需要接受参数,则应先判断参数类型,并判断参数是否包含了需要访问的属性、方法。只有当这些条件都满足时,程序才开始真正处理调用参数的属性、方法。
例:
文章图片
文章图片
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量