函数解构参数小细节

ES5获取对象或数组值的方式繁琐,ES6提供了解构特性来解决这一痛点。解构可设置默认值,支持嵌套和重命名。解构还能用于函数参数传递,同时针对参数默认值问题,可结合相关语法解决第三个参数可选及默认值的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于解构

在es5中我们获取对象或者数组的值的时候往往是这样的:

var jack = {
    name: "jack",
    age: 12
}
var colors = ["red", "green", "yellow"];
var name = jack.name,                   // "jack"
    age = jack.age;                     // 12
    firstColor = colors[0],
    secondColor = colors[1];
复制代码

如果你要提取更多变量则需要写更多类似的结构,有的可能存在多层嵌套。es6为解决这个痛点,提供了一个全新的特性,这就是我们的解构啦。要达到上面的效果,es6中我们可以这么写

const jack = {
    name: "jack",
    age: 12
};
const colors = ["red", "green", "yellow"];

const {name, age} = jack;
const [firstColor, secondColor] = colors;

复制代码

有没有更简洁明了,当然如果是使用var, let, const 声明变量,则必须提供初始化的值(等号右边);

默认值

解构的时候是可以给予默认值的,如果没有则会赋值undefined;

const jack = {
    name: "jack",
    age: 12
};
const {name, age, weight = 60} = jack;

console.log(weight) // 60

复制代码

嵌套和重命名

解构也是支持嵌套的,同时你可以赋值给不是属性名的任何变量

const jack = {
    others: {
        school: "xxx",
        country: "America"
    }
}
const {others: {school,country}} = jack;
const {others: jackInfo} = jack
console.log(school, country) // 'xxx', "America"
复制代码

解构参数

解构也可以用在函数参数传递的过程中,这种方式更特别,以前我们在实现一个函数时,如果要获取对象里面的值通常会这样

function fn (name, age, options) {
    options = options || {}; //判断是否传参
    var school = options.school;
    // ....其它逻辑代码

}
复制代码

而es6中你就完全不用如此

function fn (name, age, {school, country}) {
    
};
// 调用
fn('jack', 12, {school: "xxx", country: "America"});
复制代码

默认值问题

上面这个例子中如果你不传入第三个参数,调用函数会报错,你可以这样:

function fn (name, age, {school, country} = {}) {
    
};
// 调用
fn('jack', 12);
复制代码

这种方法只是解决了调用报错问题,但“school”和“country”的默认值还是没解决,可以利用解构赋值一样的语法解决默认值的问题

function fn (name, age, {school="xxx", country="America"}) {
    
};
复制代码

将上面两种结合起来既可以解决第三个参数可选,也可以解决默认值的问题

const default = {
    school: 'xxx',
    country: 'America'
}
function fn (name,age {school=default.school, country=default.country}=default) {
    
}
复制代码

转载于:https://juejin.im/post/5c9269b36fb9a070dc2890c7

### MATLAB `wavedec` 函数支持的小波种类 在MATLAB中,`wavedec`函数用于一维离散小波变换(DWT),可以处理多种不同类型的小波。这些小波由名称字符串指定,常见的小波家族包括Daubechies、Coiflets、Symlets、Discrete Meyer、Biorthogonal和Reverse Biorthogonal。 #### Daubechies 小波 这类小波是最常用的一类紧支撑正交小波,具有良好的时频局部化特性。可以通过 `'dbN'` 形式的字符串来表示,其中 N 是整数,代表滤波器长度[^1]。 ```matlab % 使用 db4 进行分解 [c,l] = wavedec(x, level, 'db4'); ``` #### Coiflets 小波 Coiflets 提供了更好的频率分辨率,在某些应用场合下表现更优。它们通过 `'coifN'` 来命名,同样地,N 表示特定参数设置下的变体。 ```matlab % 使用 coif3 进行分解 [c,l] = wavedec(x, level, 'coif3'); ``` #### Symlets (Least Asymmetric) 小波 作为 Daubechies 的改进版本,Symlets 努力实现更加对称的形状。使用形式为 `'symN'` 的字符串来定义具体的类型。 ```matlab % 使用 sym8 进行分解 [c,l] = wavedec(x, level, 'sym8'); ``` #### Discrete Meyer 小波 这种类型的非紧支集小波提供了平滑过渡和平坦响应的特点。可以直接用 `'dmey'` 字符串调用。 ```matlab % 使用 dmey 进行分解 [c,l] = wavedec(x, level, 'dmey'); ``` #### Biorthogonal 和 Reverse Biorthogonal 小波 这两组小波分别对应于双正交基底及其逆过程。前者通常标记为 `'biorNr.Nd'` ,后者则记作 `'rbioNd.Nr'` 。这里的 Nr 和 Nd 分别指重构和解构部分的支持宽度。 ```matlab % 使用 bior2.2 进行分解 [c,l] = wavedec(x, level, 'bior2.2'); % 使用 rbio2.2 进行分解 [c,l] = wavedec(x, level, 'rbio2.2'); ``` 为了获取完整的受支持小波列表以及更多细节信息,可以在命令窗口输入 `waveinfo('all')` 或者查阅官方文档获得最新资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值