gpt4 book ai didi

Javascript 意外的赋值行为

转载 作者:行者123 更新时间:2023-11-29 19:45:17 24 4
gpt4 key购买 nike

我正在编写一个函数,在不使用 eval() 的情况下用它们各自的值替换所有出现的变量 pq,但是,我遇到了一些意想不到的行为。顺便说一句,我正在为 str_replace 使用 phpjs

fiddle :http://jsfiddle.net/5Uedt/2/

function table(str){
str=str_replace(["nand","nor","implies","equals","not","xor","and","or","(",")"],[" 3 "," 4 "," 5 "," 6 "," 7 "," 8 ", " 9 ", " 10 ", " ( "," ) "],str).replace(/\s{2,}/g, ' ').trim();
str=str_replace(["3","4","5","6","7","8", "9", "10", "(",")"],["nand","nor","implies","equals","not","xor","and","or","(",")"],str).split(" ");

var vars={p:1,q:1};
for(vars['p']=1;vars['p']>=0;vars['p']--){
for(vars['q']=1;vars['q']>=0;vars['q']--){
alert(str);
newinput=str;

for(var i=0;i<newinput.length;i++){
var token=newinput[i];
if(token.length===1){
console.log(newinput[i]);
newinput[i]=vars[newinput[i]];


}
}
// console.log(n.join(" "));

}
}
}

我有这段代码可以替换所有出现的地方,但它不起作用。我每次都会提醒输入的原始字符串,但是,字符串会发生变化。该函数的预期输出是 p,and,q 重复 4 次,相反,我有 p,and,q,然后是 1,and,1 重复 3 次。但是,我似乎没有对 str 进行任何分配。有谁知道为什么会这样?

最佳答案

当您将 newinput 设置为 str 时,您仍在引用该原始对象。当您稍后在 newinput 中更改值时,您会影响 str 变量。

如果你想克隆对象,你可以像这样遍历 str 的属性:

var newinput = {};
for(var key in str) {
newinput[key] = str[key];
}

因此,复制原始对象不会影响它的值。假设您没有要在 str 对象中克隆的对象。如果这样做,只需递归地运行此函数。

Updated Fiddle

关于Javascript 意外的赋值行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152428/

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