TA的每日心情 | 开心 14 小时前 |
---|
签到天数: 57 天 [LV.5]常住居民I
超级版主
 
- 积分
- 307601
|
JS是一种松散类型()的语言,这意味着我们在定义函数时不需要指定参数的类型。函数参数可以是任何类型的值,包括:
基本数据类型:如、、、、、。
引用类型:如、、。
这种松散的类型系统使得函数在调用时非常灵活。例如,一个函数可以接受数字、字符串,甚至是另一个函数作为参数:
(){
();
}
(42);''
('H');''
([1,2,3]);''(数组是对象的一种)
({:''});''
((){});''
2参数的数量
JS函数在定义时可以接收任意数量的参数。当调用函数时,传入的参数数量可以少于、等于或多于定义时的形参数量:
少于形参数量:未接收参的形参将默认值为。
多于形参数量:多余的参数不会被自动接收,但可以通过对象或者更现代的来处理。
使用对象的示例:
(){
=0;
(=0;;++){
+=[];
}
;
}
((1,2,3,4));输出10
从ES6开始,JS引入了,使得处理不定参数更直观:
(){
((,)=+,0);
}
((1,2,3,4));输出10
3默认参数值
ES6引入了默认参数值的机制,为处理默认值的问题提供了一种更简洁的解决方案。在定义函数时,可以直接为某个参数设置默认值:
(='W'){
(`H,${}!`);
}
();输出:H,W!
('J');输出:H,J!
这种方式使得代码更具可读性,同时减少了在函数体内进行默认值判断和赋值的繁琐。
4参数解构
JS允许在函数参数中进行解构赋值,尤其适用于对象和数组。这在处理复杂数据结构或只需其中部分字段时特别有用:
对象解构:
UI({,,=''}){
(`${}${}${}`);
}
={:'A',:30};
UI();输出:A30
数组解构:
C([,]){
(`X {},Y {}`);
}
=[10,20];
C();输出:X:10,Y:20
5参数传递机制
JS中的参数总是按值传递的。对于基本数据类型,这意味着传递的是值的拷贝,而对引用类型来说,虽然传递的是引用的拷贝,但引用指向的对象本身是可以被修改的。因此,当传递对象或数组时,函数内的操作能够影响到外部的变量:
A(){
(100);
}
=[1,2,3];
A();
();输出:[1,2,3,100]
然而,将传入的对象完全替换掉是法影响到外部变量的,因为只是在函数内部改变了引用的指向:
A(){
=[100,200,300];
}
=[1,2,3];
A();
();输出:[1,2,3]
6立即执行函数表达式(IIFE)
虽然不直接与函数参数相关,但立即执行函数表达式(IIFE)常与参数搭配使用,以创建单独的作用域:
((){
();
})('H,W!');立即执行并输出:H,W!
这种模式在模块化JS代码时非常常见,以避免全局作用域的污染。
总之,JS函数参数是一个灵活而强大的特性,允许开发者通过各种方式处理函数传入的数据。这种灵活性不仅体现在参数的类型和数量上,还包括了如何在参数中应用解构、默认值和其传递机制等方面。通过深入理解这些概念,开发者能够编写出更灵活、可维护和高效的代码。 |
|