您好,欢迎来到微智科技网。
搜索
您的当前位置:首页登录出现undefined_Undefined:第三种布尔值

登录出现undefined_Undefined:第三种布尔值

来源:微智科技网

我想在自己的某个项目里添加一个通知消息,类似谷歌文档保存时的提示。换而言之,就是一条提示消息,表示每次更改文档时都会进行保存。一旦保存成功,消息将变为:“All changes saved in Drive”。

下面来探讨一下如何使用布尔值进行实现,实际上涉及三种可能的状态。当然,这绝对不是唯一的方法。坦率地说,我甚至不确定它是否是最佳方案,不过对我来说蛮有用的。

下面是“Saving…”状态的示例:

每当更新文档时,“Saving”提示都会出现。

接下来是“Saved”状态的示例:

当更新完成后,“Saved”提示就会出现。

为了实现上述示例,我的第一想法就是使用布尔值。我可以通过定义一个isSaving的变量来实现模板中的条件字符串的渲染,如下所示:

其中,模板定义如下:

这样,每当保存时,将变量值设置为true,没有保存时设置为false。怎么样,简单吧?

不过,这里存在一个用户体验(UX)的问题。默认的消息是“All changes saved”,当用户初次登录页面时,即使没有保存操作,页面也会提示“Saved”消息。然而,我希望在第一次更改时才触发“Saving”消息,在这之前不进行任何提示。

这就需要给变量isSaving设置第三种状态。那么问题来了:我们需要更改字符串变量的值作为三种状态之一吗?如果可以的话,如何在当前的布尔变量中实现第三种状态呢?

isSaving可以取两种值:true或者false。但是在进行let isSaving;声明之后,这个变量的默认值是什么呢?是undefined。任何变量在声明之后都是undefined,除非对其进行赋值。好了,我们可以利用初始化时的undefined值来实现,不过需要对模板中的条件语句稍加改变。

对于计算结果不为true的任何条件,三元运算将计算第二个表达式的值。undefined和false都不是true,因此三元运算的解析为false。If/else语句也可以实现类似的功能,因为else表明条件语句不为true。但是想要区分undefined和false,可以通过显式地检查false值实现,如下所示:

我们对true和false值做了恒等比较,上面的写法存在嵌套且难以阅读。如果模板支持if/else语句,可对代码进行如下重构:

这样,当变量值既不是true也不是false时,将不会提示任何消息——我想要的功能都实现啦!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务