[英]How to break out of a function in Javascript?
这是一段代码,请注意我已经评论了我想在代码中实现的目标
const extraHot = () => {
if (hot === "h") {
return `extra hot`
}
// otherwise, do nothing, don't return anything
// (not even an empty string or undefined object)
// I want to break here
}
if (givenAmount >= dict){
// I would like to return "Drink maker makes 1 extra hot sugar and 1 stick"
return `Drink maker makes 1 ${extraHot()} sugar and 1 stick`
}
以下代码将在“makes”和“sugar”之间返回“undefined”
const extraHot = () => {
if (hot === "h") {
return `extra hot`
}
return
}
以下代码将返回“makes”和“sugar”之间的空格
const extraHot = () => {
if (hot === "h") {
return `extra hot`
}
return ""
}
您的问题不在于函数在hot !== "h"
返回什么,而在于您如何编写模板字符串。 如果 if 评估为真,则返回' extra hot '
,并编写模板字符串,如
Drink maker makes 1${extraHot()}sugar and 1 stick
你的品牌和糖之间的空间的原因是因为你有一个后空间makes
和另一个在前面的sugar
。 为了防止这种情况,您必须将额外的热功能更改为:
const extraHot = () => {
if (hot === "h") {
return "extra hot " # Note the space after hot
}
return ""
}
稍后将其用于:
if (givenAmount >= dict){
return `Drink maker makes 1 ${extraHot()}sugar and 1 stick`
}
您可以将返回字符串的函数标准化为返回空字符串,如果某些结果在字符串前面或末尾占用额外的空间并保持这种样式。
如果条件错误,这种方法允许链接条件并且不会获得额外的空间。
在这种情况下取
const extraHot = () => hot === "h" ? ' extra hot' : '';
和
if (givenAmount >= dict) return `Drink maker makes 1${extraHot()} sugar and 1 stick`;
结果要么
Drink maker makes 1 sugar and 1 stick
或者
Drink maker makes 1 extra hot sugar and 1 stick
^^^^^^^^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.