此问题在此处已有答案:
Why does instanceof return false for some literals?(共10个答案)
14小时前就关门了。
我尝试使用以下函数将给定字符串中的“...”替换为存储在数组中的其他不同字符串:
`
function addTokens(input, tokens)
{
let returnInput = input;
if ((typeof input === 'string') || (input instanceof String))
{
if(input.length >= 6)
{
for (let i = 0; i < tokens.length; i++)
{
if((tokens[i].tokenName === 'string') || (tokens[i].tokenName instanceof String))
{
returnInput = returnInput.replace("...",`${tokens[i].tokenName}`);
}
else
{
//throw new Error("Invalid array format");
}
}
}
else
{
//throw new Error("Input should have at least 6 characters");
}
}
else
{
//throw new Error("Input should be a string");
}
return returnInput;
}
`
我甚至对这些错误进行了注解,这样它们就不会以任何方式进行干扰,但这似乎不起作用;如果我打电话
result = addTokens('User ...', [{ tokenName: 'user' }])
console.log(result)
,它只返回初始的“User...”,而不是我希望它返回的“User ${user}”。
然而,当我运行这段代码时:
`
let str = "User ...";
let tok = [{ tokenName: "user" }]
str = str.replace("...", `${tok[0].tokenName}`);
console.log(str);
`
它本身就完成了我想让它做的事情。
有谁能帮我找出问题所在吗?很抱歉,我是Javascript新手。谢谢!
1条答案
按热度按时间ql3eal8s1#
您有一个打字错误:
应该是
更新后的工作代码如下: