为什么AWS Lambda在添加时会连接AMAZON.NUMBER类型的插槽?

时间:2018-04-26 17:30:41

标签: node.js amazon-web-services aws-lambda alexa

我正在学习Alexa& AWS Lambda和我正在尝试确定为什么,当AMAZON.NUMBER类型的插槽被添加到另一个数字(在我的情况下是一个属性)时,这些数字直接在一起就好像它们被连接而不是被添加一样?

'CountSeveralTimes': function(){
  var count = this.event.request.intent.slots.count.value;
  this.attributes['currentCount'] = this.attributes['currentCount'] + count;
  this.response.speak("Nice Job! You have now counted " + 
  this.attributes['currentCount']+ " times.").listen();
  this.emit(':responseReady');
},

假设我运行上面的一段代码,其值为“count”,其类型为插槽类型AMAZON.NUMBER,为10,currentCount为10.而不是将10 + 10添加到评估为20,而不是而是返回“好工作!你现在已经计算了1010次。”我尝试通过在它们的添加之间放置一个随机数来调试,看看哪一个添加不正确。属性(currentCount)正确添加,但插槽中的count变量没有。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是一个JavaScript问题。您可能认为this.event.request.intent.slots.count.value类型为string,而不是number。 这意味着,表达式this.attributes['currentCount'] + count具有形式number + number,这将导致加号充当算术加法运算符,这就是您想要的。

要解决此问题,请显式键入操作数:

 this.attributes['currentCount'] = Number( this.attributes['currentCount'] ) +
 Number( count );