想return数据 返回的确是函数问题处理

文章目录


事情是这样的

今天写页面,想显示个协议类型,写了个函数:

javascript 复制代码
const getProtocol = () => {
  if (type == 1) return "协议A";
  if (type == 2) return "协议B";
  if (type == 3) return "协议C";
};

然后页面上这么用:

html 复制代码
<span>协议类型:{getProtocol}</span>

结果页面出来这么个玩意:

复制代码
协议类型:() => { if (type == 1) return "协议A"; if (type == 2) return "协议B"; if (type == 3) return "协议C"; }

问题出在哪

忘了加括号。

getProtocol 是函数本身,getProtocol() 才是调用它。

我写的是 {getProtocol},等于把整个函数的源码扔页面上了。

改成 {getProtocol()} 就好了。

顺便修了另外两个坑

原来的代码还有两个隐患:

1. 没考虑空值

万一 type 不存在,函数就返回 undefined,页面显示空白。

加了个默认值:

javascript 复制代码
const getProtocol = () => {
  if (type == 1) return "协议A";
  if (type == 2) return "协议B";
  if (type == 3) return "协议C";
  return "未知协议";  // 兜底
};

2. 数据取法不安全

原代码写了 items!.protocolType,要是 items 是空的直接就崩了。

改成 items?.protocolType,安全一点。

最终代码

javascript 复制代码
const getProtocol = () => {
  const type = data?.form?.items?.protocolType;
  if (type === 1) return "协议A";
  if (type === 2) return "协议B";
  if (type === 3) return "协议C";
  return "未知协议";
};

页面调用:

html 复制代码
<span>协议类型:{getProtocol()}</span>

一个更清爽的写法

其实这种映射关系,用对象比 if 好看:

javascript 复制代码
const getProtocol = () => {
  const type = data?.form?.items?.protocolType;
  const map = {
    1: "协议A",
    2: "协议B",
    3: "协议C"
  };
  return map[type] || "未知协议";
};

您好,我是肥晨。

欢迎关注我获取前端/AI学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

相关推荐
u0111026754 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
雪芽蓝域zzs9 小时前
第 7 节:多边形点击弹窗 + 清空绘制按钮
vue.js
溪语流沙9 小时前
【Web全栈进阶】Composition API与组件通信:props深入、emit、插槽
前端·css·vue.js
顽疲12 小时前
Java vue 养老系统源码详解:入住核算单 live-check 缴费入账与预交金收据实践
java·vue.js·python·java 养老·springboot 养老·vue养老
志尊宝13 小时前
Vue3 零基础每日笔记(088·完结):从零到一——一个完整 Vue3 项目的成长复盘
前端·javascript·vue.js·笔记·ecmascript·#vue.js
桔筐14 小时前
Vue中DOM的data-*自定义属性(dataset)与Vue data响应式变量区别详解
前端·javascript·vue.js
用户17335980753715 小时前
纯前端 PDF 按书签拆分避坑指南:拆分后章节对不上?
前端·javascript·vue.js
雪芽蓝域zzs16 小时前
Webstorm打开uniapp uvue文件报红处理方案
vue.js
撸串-研究生17 小时前
面向景区的综合服务管理平台设计——以稻城亚丁景区为例【附源码】
java·开发语言·vue.js·前后端分离·稻城亚丁景区
志尊宝1 天前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js