函数括号代表什么?
函数括号代表调用,当我们不需要调用的时候,不要写括号;
正确代码
// 写一个方法,其他方法省略
waterPrePay() {
uni.showToast({
title: '建设中',
duration: 2000,
});
}
// 对象的每一个key的value是一个函数
const nameObj: any = {
水费缴纳: this.waterPay,
账单查询: this.billQuery,
水费预存: this.waterPrePay,
};
// 调用方法一
// 或运算符,首先判断是否存在,如果存在,返回的是对应的函数,加括号函数调用,
(nameObj[biz_ch_name] || this.clickFunciton)();
// 调用方法二
// 三目运算符,利用hasOwnProperty方法
// nameObj.hasOwnProperty(biz_ch_name) ? nameObj[biz_ch_name]() : this.clickFunciton();
// 调用方法三
// 三目运算符,利用Object.hasOwn方法
// Object.hasOwn(nameObj, biz_ch_name) ? nameObj[biz_ch_name]() : this.clickFunciton();
错误一:或运算
// 写一个方法,其他方法省略
waterPrePay() {
uni.showToast({
title: '建设中',
duration: 2000,
});
}
// 对象的每一个key的value是一个函数
const nameObj: any = {
水费缴纳: this.waterPay,
账单查询: this.billQuery,
水费预存: this.waterPrePay,
};
// 错误调用
// 或运算符,自己理解的是先判断如果nameObj存在则调用,否则调用this.clickFunciton();
// 实际执行是,有括号代表调用该方法,就是调用nameObj[biz_ch_name](),如果没有该方法则返回如下图所示:不是一个方法,从而不会走或后面的方法;
nameObj[biz_ch_name]() || this.clickFunciton();
// 正确写法如下,判断条件是否为真,然后调用方法
(nameObj[biz_ch_name] || this.clickFunciton)();
// 看到什么不是一个方法的错误,就是该方法没有调用对,或者没有写对方法
错误二:在对象中就直接调用
// 写一个方法,其他方法省略
waterPrePay() {
uni.showToast({
title: '建设中',
duration: 2000,
});
}
// 对象的每一个key的value是一个函数
// 错误原因:括号代表调用,这样每次匹配时,就已经把每一个key对应的方法都调用一次,
const nameObj: any = {
水费缴纳: this.waterPay(),
账单查询: this.billQuery(),
水费预存: this.waterPrePay(),
};
// 调用
(nameObj[biz_ch_name] || this.clickFunciton)();