为了账号安全,请及时绑定邮箱和手机立即绑定

检查 Javascript(或框架)中字段是否存在的正确方法?

检查 Javascript(或框架)中字段是否存在的正确方法?

LEATH 2023-07-29 15:29:51
我想这一般适用于所有 JS,但是重写此计算方法以确保在字段不可用时不会失败的正确方法是什么?computed() {   isVerified() {        return this.name.info.is_valid;   }}我可以做到,但会很罗嗦:computed() {   isVerified() {        if (this.name && this.name.info && this.name.info.is_valid) {           return true;        } else {           return false;        }   }}
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

将可选链接与无效合并运算符相结合似乎适合您的情况。

computed() {

  isVerified() {

    return this.name?.info?.is_valid ?? false;

  }

}

如果this.namethis.name.info或中的任何一个this.name.info.is_validnullundefinedisVerified则返回false(布尔值)。否则,它返回 的当前值this.name.info.is_valid,无论它是什么(包括除null或 之外的任何错误值undefined。即:0''NaN)。


请记住,目前以下浏览器列表不支持这两个运算符:

  • IE浏览器

  • 安卓版火狐浏览器

  • 安卓版歌剧

  • 三星互联网

请注意最新的 Vue 2 ( v2.6.11) 用法:这两个运算符仅在组件内部工作(方法、计算、钩子等),但如果直接在模板中使用,它们会出错。

尚未在 Vue 3 中进行测试,但我希望它们能够工作(从v3.7开始它们是有效的 TypeScript 运算符)。

对于纯粹主义者来说,这里是输出

function isValid(name) {

  return name?.info?.is_valid ?? false;

}

...在巴别塔:


"use strict";


function isValid(name) {

  var _name$info$is_valid, _name$info;


  return (_name$info$is_valid = name === null || name === void 0

          ? void 0

          : (_name$info = name.info) === null || _name$info === void 0

            ? void 0

            : _name$info.is_valid

         ) !== null && _name$info$is_valid !== void 0

          ? _name$info$is_valid

          : false;

}


查看完整回答
反对 回复 2023-07-29
?
森林海

TA贡献2011条经验 获得超2个赞

javascript 在你的前两个变量中是很好的和布尔值,但是你在你的 is_valid 函数中引用了 django 吗?


    if (this.name && this.name.info && this.name.info.is_valid) {

       return true;

    } else {

       return false;

    }


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信