Javascript 基于表达式的对象分解

Javascript 基于表达式的对象分解,javascript,ecmascript-6,expression,destructuring,Javascript,Ecmascript 6,Expression,Destructuring,我想知道在销毁对象时是否可以使用动态表达式: 假设: //basic de-structure example var a = {b: 1}; var {b: c} = a; // stores 1 in c //what I want to do var { (b > 0): isItHigher = false} = a; // want isItHigher to be true 这可能是我不知道的语法,但本质上,我希望根据原始对象属性计算表达式,并将其存储在新变量中。这可能吗?您

我想知道在销毁对象时是否可以使用动态表达式:

假设:

//basic de-structure example
var a = {b: 1};
var {b: c} = a; // stores 1 in c
//what I want to do
var { (b > 0): isItHigher = false} = a; // want isItHigher to be true
这可能是我不知道的语法,但本质上,我希望根据原始对象属性计算表达式,并将其存储在新变量中。这可能吗?

您可以使用。默认值还可以包括基于已提取值的表达式:

var a={b:1};
var{b,isItHigher=b>0}=a;

控制台日志(isItHigher)不清楚您为什么需要这个。你能再举一个例子吗?对于多个值,是否需要多个
isItHigher
s?您可以简单地使用三元运算符,尽管还不清楚应该有哪些值
isItHigher
。去结构化为我提供了一种从对象初始化多个变量的简洁方法。我经常使用它从嵌套对象中读取变量。通常情况下,您需要从上述变量中获取更多信息。我想这样做。您的示例的最后一行是否相当于
var isItHigher=a.b>0
?谢谢。对您的回答的一个小的更新是,您的评论不准确-但这个概念正是我想要的。警告:此方法还创建了一个变量
b
,这可能会不必要地污染名称空间,具体取决于上下文。@Anko-确实如此。我不会在全局环境下这样做,但在函数和模块内部,这通常不是问题。我将在我的回答中补充这一点。当要分解的对象本身有一个名为“isItHigher”的属性时,这种方法会出现另一个问题。在这种情况下,将根本不执行默认表达式,而是指定该对象属性的值。