Node.js函数返回值return花括号的问题

下面这个怎么解释呢?

img

输出结果是26
但是与第6行{M,S}的顺序无关,换成{S,M}不影响结果,为什么?
这种return后面花括号的用法,和python返回多个值,是一回事吗?

ES6的新特性
return处,相同的属性名时,可以采用对象属性简写

return {S, M}
// 是下面的简写
return {
  S: S,
  M: M
}

下面获取值是对象解构,也是需要和对象中的属性名相同

let {M, S} = func1(4, 22)
// 等于
let M = func1(4, 22).M
let S = func1(4, 22).S
// 你也可以重命名
let {S: A, M} = func(4, 22)
// S重命名为A
console.log(A, M)

第六行的let 换括号里是es6的新特性--对象解构,解构出来的变量不管怎么调换位置,变量名会和解构对象中的属性名对应,如果在解构对象中找不到属性,会导致解构失败