gpt4 book ai didi

javascript - JavaScript 中相同的输入,不同的输出?

转载 作者:行者123 更新时间:2023-11-28 02:42:34 25 4
gpt4 key购买 nike

我现在正在重写我的一个脚本,遇到了一个我无法解决的问题。 command 是一个输入变量,现在我已经运行了这个测试(两个正则表达式是相同的):

var parts = command.match(/([^\s"]+(?=\s*|$))|(".+?")/g);
console.log(command === "view -10 10 -10 10");
console.log(parts);
console.log(String("view -10 10 -10 10").match(/([^\s"]+(?=\s*|$))|(".+?")/g));

控制台现在显示

true
[]
["view", "-10", "10", "-10", "10"]

这让我完全困惑。即使使用 === 时,为什么 command 不以相同的方式分隔,当它等于我的测试字符串时?

最佳答案

来自 OP

这是整个问题的解决方案:程序的基本结构如下

while (<condition>) {
var command = getNextCommand();

var parts = command.match(/([^\s"]+(?=\s*|$))|(".+?")/g);
processParts(parts);
}

其中 processParts() 操纵参数:

function processParts(parts) {
var foo = parts.shift();
doSomethingElse(foo);
}

这导致主例程中的 parts 缩小,而在我的代码 processParts 中,实际上 shift 所有元素,导致 console. log(parts) 写入一个空数组,因为它被延迟记录(请参阅dystroy的评论)。

最重要的是,我的 processParts() 函数出现了一个我没有注意到的错误,这就是我将其归咎于空 parts 的原因。修复该错误后,上面的代码再次工作,因为我不再需要 parts 并且可以忍受它缩小了。一般来说,您可能需要注意这一点,不过……JavaScript 会做一些奇怪的事情。

关于javascript - JavaScript 中相同的输入,不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com