问答

js三目运算,怎么能简化一下?

作者:admin 2021-05-06 我要评论

let token='';let b = token == ''?'123':toekn 就这样的逻辑,怎么能简化一下,好像有那种 ,||,这种东西,用不太明白。 header:{ 'token':uni.getStorageSync...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
let token='';
let b = token == ''?'123':toekn

就这样的逻辑,怎么能简化一下,好像有那种 &&,||,这种东西,用不太明白。

                    header:{
                        'token':uni.getStorageSync('token')!=''?uni.getStorageSync('token'):1,
                        'content-type':'application/x-www-form-urlencoded'
                    }
                  }).then(res => {
                        //token失效过期,跳转到登录页面 
                        if(res.data.code == 401){
                            uni.navigateTo({
                                url:'../../login/login'
                            })
                            return ;
                        })
 'token':uni.getStorageSync('token')!=''?uni.getStorageSync('token'):1,

意思是发现本地token是'',就随便传个值1,给服务器,返回肯定是登录超时了。然后跳转到登录页。

还要一种情况,是token != '',那就直接读出token的值,服务器返回可能是没失效,也可能是失效了。如果失效了,也跳转。没失效则拿到了返回的data数据。

越发感觉设计的像屎一样的逻辑,大家都怎么做的。

###

||是‘或’的意思,会判断左边是否有值,即会使用Boolean将左边进行转化,若为true,返回左边的值,若为false,返回右边的值
token || '123'
&&是并且的意思,会判断左边是否有值,即会使用Boolean将左边进行转化,若为false,返回左边的值,若为true,返回右边的值
ES2020 新增了一个运算符 ??。当左侧的操作数为 null 或者 undefined时,返回其右侧操作数,否则返回左侧操作数。

###

楼上说的没啥毛病,再补充一种??
当token为null或者undefined的时候才会返回右边的值

var token
token ?? 2 // 返回2
var token = null
token ?? 2 // 返回2
var token = ''
token ?? 2 // 返回''
###
let token
let b = token || '123'

image.png
image.png

###

如果便于阅读的话,可以用 if 替代三目

let token = '';
let b = token;
if (!token) {
    b = '123';
}
###
let token='';
let b = token || '123'

js还有最新的规范逻辑赋值

let token='';
token ||= '123' // '123'

更多逻辑赋值??=、&&=你可以你看下文档;

###

需要注意一点的是,逻辑运算符,||&& 在大多数语言中,都是始终返回布尔值。

但是在,JS 中则是返回成立项。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • js三目运算,怎么能简化一下?

    js三目运算,怎么能简化一下?

  • 为什么java用zookeeper做服务发现,gol

    为什么java用zookeeper做服务发现,gol

  •  yum update microcode_ctl报错

    yum update microcode_ctl报错

  • pandas数据新增一列计算连续次数

    pandas数据新增一列计算连续次数

腾讯云代理商
海外云服务器