gpt4 book ai didi

javascript - JS 错误 : Variable not defined. ... 但它是

转载 作者:行者123 更新时间:2023-11-29 10:29:08 26 4
gpt4 key购买 nike

<分区>

首先,如果这是一个愚蠢的问题,我深表歉意。我很可能完全遗漏了一些微不足道的东西。我不知道那是什么。那么问题来了:

(上下文:我正在用 JavaScript 制作任意精度的数学库)

代码如下:

    function processInput(n){       
let parts;
let numer, denom, positivity;
if(is.negative(n)){
positivity = -1;
n = n.substr(1);
} else {
positivity = 1;
}
////////// RELEVANT SECTION STARTS ///////////////
console.log(n); // prints "1 2/3", which is what I'm testing
if(is.zero(n)){
numer = [0], denom = [1], positivity = 0;
} else if(is.mixedFrac(n)){
console.log(n); // <------ error: "n is not defined". How???
parts = n.match(/\d+/g).map(function(e){
return ArrayOps.wholeToArnum(n);
});
////////// RELEVANT SECTION ENDS ///////////////
let w = parts[0],
n = parts[1],
d = parts[2];
let n1 = ArrayOps.multiply(w, d);
numer = ArrayOps.add(n1, n);
denom = d;
} else if(is.frac(n)){
parts = n.match(/\d+/g).map(function(e){
return ArrayOps.wholeToArnum(e);
});
numer = parts[0];
denom = parts[1];
} else if(is.repeatingDecimal(n)){
let temp = n.split('...');
let dec = ArrayOps.decToArnum(temp[0]);

let decLength = dec.decLength;
let repDec = ArrayOps.repDecToArnum(temp[1], decLength);

let n1 = dec.numer;
let d1 = dec.denom;
let n2 = repDec.numer;
let d2 = repDec.denom;
n1 = ArrayOps.multiply(n1, d2);
n2 = ArrayOps.multiply(n2, d1);
numer = ArrayOps.add(n1, n2);
denom = ArrayOps.multiply(d1, d2);
} else if(is.decimal(n)){
n = ArrayOps.decToArnum(n);
numer = n.numer;
denom = n.denom;
} else if(is.wholeNum(n)){
numer = ArrayOps.wholeToArnum(n);
denom = [1];
} else {
throw new Error(`${n} is not a valid form of input.`);
}
return {numer, denom, positivity};
}

(JS fiddle :http://jsfiddle.net/k4mjwg57/3/)

基本上,归结为:

function process(n){
if(passTest(n)){
console.log(n); // Error: "n is not defined"
}
}

这是调试的截图: n is defined.

正如我在红色矩形中突出显示的那样,调试器清楚地显示了 n = "1 2/3",并且它通过了测试 (is.mixedFrac(n) ), 因为它是带分数。

is.mixedFrac(n) 中没有任何内容可以更改 n

继续产生以下错误: The error

如果一开始就没有定义n,我就不应该通过测试。有人可以帮我解决发生的事情吗?同样,我确定这是一个微不足道的错误。但我没有看到它。

注意事项:

  • 将 if 控件更改为 if(is.mixedFrac(n) && n) 仍然传递到括号内
  • 我知道不鼓励截图,但是如果你看一下,我将鼠标悬停在 n 上,同时在断点上,它仍然会显示 n“1 2/3”
  • 绝对没有异步的事情发生。没有超时、ajax、promise 或任何正在发生的事情。我的全部代码都非常简陋。
  • 在 FireFox 中,它给了我以下错误:"ReferenceError: can't access lexical declaration `n' before initialization"

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