shenyu的rule表单handler填写问题
你凭什么以为你十年寒窗,抵得过我三代从商。——盛田昭
主要是这个pr:
https://github.com/apache/shenyu-dashboard/pull/518
发现原来是JSON.parse的时候,由于handler是undefined导致报错
改为
1 | JSON.parse(handle ?? "{}"), |
JSON.parse(handle ?? "{}") 这个表达式涉及到了两部分的知识点:空值合并操作符(??)和JSON.parse()。
空值合并操作符(
??):- 空值合并操作符(nullish coalescing operator)
??用于判断一个值是否为null或undefined,如果是,则返回右边的值。如果左边的值不是null或undefined,则返回左边的值。 - 在这个表达式中,
handle ?? "{}"的作用是:如果handle的值是null或undefined,就返回"{}",否则返回handle的值。
- 空值合并操作符(nullish coalescing operator)
JSON.parse():JSON.parse()是一个用于将JSON格式的字符串转换成JavaScript对象的方法。在这里,handle ?? "{}"返回一个JSON字符串,JSON.parse()将其解析成JavaScript对象。- 如果
handle是null或undefined,最终会解析一个空对象{},否则会解析handle的内容。
举个例子:
1 | let handle = '{"name": "John", "age": 30}'; |
如果handle是null或undefined,则会解析成一个空对象:
1 | let handle = null; |
简而言之,JSON.parse(handle ?? "{}")的目的是:确保handle不是null或undefined,否则使用一个空对象字符串"{}"作为备选值进行解析。
