你凭什么以为你十年寒窗,抵得过我三代从商。——盛田昭

主要是这个pr:

https://github.com/apache/shenyu-dashboard/pull/518

发现原来是JSON.parse的时候,由于handlerundefined导致报错

改为

1
JSON.parse(handle ?? "{}"),

JSON.parse(handle ?? "{}") 这个表达式涉及到了两部分的知识点:空值合并操作符(??JSON.parse()

  1. 空值合并操作符(??

    • 空值合并操作符(nullish coalescing operator)??用于判断一个值是否为nullundefined,如果是,则返回右边的值。如果左边的值不是nullundefined,则返回左边的值。
    • 在这个表达式中,handle ?? "{}"的作用是:如果handle的值是nullundefined,就返回"{}",否则返回handle的值。
  2. JSON.parse()

    • JSON.parse()是一个用于将JSON格式的字符串转换成JavaScript对象的方法。在这里,handle ?? "{}"返回一个JSON字符串,JSON.parse()将其解析成JavaScript对象。
    • 如果handlenullundefined,最终会解析一个空对象{},否则会解析handle的内容。

举个例子:

1
2
3
let handle = '{"name": "John", "age": 30}';
let parsedData = JSON.parse(handle ?? "{}");
console.log(parsedData); // 输出 { name: 'John', age: 30 }

如果handlenullundefined,则会解析成一个空对象:

1
2
3
let handle = null;
let parsedData = JSON.parse(handle ?? "{}");
console.log(parsedData); // 输出 {}

简而言之,JSON.parse(handle ?? "{}")的目的是:确保handle不是nullundefined,否则使用一个空对象字符串"{}"作为备选值进行解析。