#||的兼容性写法1

# 应用场景描述

当请求携带当前的token去请求资源接口时,当前的token是过期的。后端发现token过期会进行续命上,并验证了token没有被篡改。续命上的token是一个新生成的token,并要通过响应头的方式返回给前端。(new-token响应头的属性。)

前端拦截后端过来的响应请求,并提取http报文当中的new-token对应的值。(k-v对形式)如果有值说明前端是携带已经过期的token进行请求的。如果没值前端是带着没有过期的token进行资源请求。

const newToken = args.header['new-token'] || args.header['New-Token']
1

从请求头args.header中获取new-tokenNew-Token的值,优先取小写形式的键,如果不存在则尝试大写形式的键。如果都不存在返回的是undefined。

# 举例子说明

const args = {
  header: {
    'content-type': 'application/json',
    'new-token': 'abc123',  // 小写形式
    'Accept': 'text/html'
  }
};
1
2
3
4
5
6
7
  1. 当执行 const newToken = args.header['new-token'] || args.header['New-Token'] 时:
    • 会先尝试读取小写的 new-token(值为 'abc123'
    • 因为存在且不为假值(false/null/undefined/0/'' 等),直接返回 'abc123'
    • 不会再检查大写的 New-Token
  2. 如果请求头只有大写形式:
const args = {
  header: {
    'New-Token': 'xyz789'  // 只有大写形式
  }
};
1
2
3
4
5
  • 尝试 args.header['new-token'] 会得到 undefined
  • 于是通过 || 继续尝试 args.header['New-Token'],最终得到 'xyz789'
  1. 如果两种形式都不存在:
const args = { header: {} };
1
  • 最终 newToken 会是 undefined

# 总结知识点

false = null= undefined = 0 = ''

Last Updated: 5/20/2025, 4:37:55 AM