矛盾的Javascript变量定义

时间:2017-08-23 07:53:53

标签: javascript math undefined

我正在尝试计算一个数学问题。它需要在循环变量中使用变量。

这是我的JavaScript代码:

var a = m+1;
var b = n+1;
var c = o+1;
var d = p+1;
var e = q+1;
var f = r+1;
var g = s+1;
var h = t+1;
var i = u+1;
var j = v+1;
var l = w+1;

var m = (1+b)/2;
var n = (a+c)/2;
var o = (b+d)/2;
var p = (c+e)/2;
var q = (d+f)/2;
var r = (e+g)/2;
var s = (f+h)/2;
var t = (g+i)/2;
var u = (h+j)/2;
var v = (i+l)/2;
var w = (j+12)/2;

function CalculateA() {
    alert(a);
}

HTML只是一个调用CalculateA()函数的按钮。

结果未定义。有没有办法正确计算这个或用javascript或编码不可能。

修改的 我现在认为这不是很好。 我还通过循环计算运行excel并找到答案。 无论如何,谢谢你的帮助。 https://drive.google.com/open?id=0B9I2lCue4HpLZEh3X0NGTUE4YXM Excel Calculation ^

3 个答案:

答案 0 :(得分:3)

您可以将所有变量的起始值设为零以阻止NaN,然后再次调用操作,直到a收敛到12.916666666666651

function calc() {
    a = m + 1;
    b = n + 1;
    c = o + 1;
    d = p + 1;
    e = q + 1;
    f = r + 1;
    g = s + 1;
    h = t + 1;
    i = u + 1;
    j = v + 1;
    l = w + 1;
    m = (1 + b) / 2;
    n = (a + c) / 2;
    o = (b + d) / 2;
    p = (c + e) / 2;
    q = (d + f) / 2;
    r = (e + g) / 2;
    s = (f + h) / 2;
    t = (g + i) / 2;
    u = (h + j) / 2;
    v = (i + l) / 2;
    w = (j + 12) / 2;
    console.log(a);
}

var a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0,
    ii, letter;

for (ii = 0; ii < 1000; ii++) {
    calc();
}

for (ii = 1; ii <= 23; ii++) {
    letter = (ii + 9).toString(36);
    letter === 'k' || console.log(letter, window[letter]); // k is missing ...
}
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

编码没有什么是不可能的。它返回undefined因为'a'被声明在顶部,其中m未定义,它是“NaN”错误 - 不是数字。

答案 2 :(得分:-1)

变量最终依赖于彼此,这意味着您的结果将始终为NaN。

Javascript尝试为您提供公式的精确结果,但不能。这个数学问题需要的是将每个术语中的变量相互替换,以获得只有1个变量的结果 - 我认为你没有办法在Javascript中以比做更少的努力来做到这一点手动。