将数学公式存储在变量中

时间:2015-09-14 18:18:10

标签: javascript

我的脚本可以打印三角形数字的模式(例如1,3,6,10,...),但我想将公式(n * (n + 1)) / 2存储在名为formula的变量中,而不是在if-else语句中多次写入。

/* Current script */

var pat = document.getElementById("pattern");
var nMax = 10; // max number of intervals

for (var n = 1; n <= nMax; ++n) {
    if (n != nMax)
        // insert comma and space after each interval
    	pat.innerHTML += (n * (n + 1)) / 2 + ", ";
    else
        // append ellipsis after last interval
        pat.innerHTML += (n * (n + 1)) / 2 + ",&hellip;";
}
<body>
    <p id="pattern"></p> 
</body>

这是我尝试过的,但结果是1,1,1,1,1 ......:

我已将var n = 1移至nMax变量下的自己的行,以便在公式中定义n并将for循环的第一部分更改为{{ 1}}。然后在if-else语句中,我用n = 1变量替换了(n * (n + 1)) / 2的每个实例。在测试修改后的脚本之后,模式导致了所有1。

formula
/* Version with formula variable (not working properly) */

var pat = document.getElementById("pattern");
var nMax = 10; // max number of intervals
var n = 1;

var formula = (n * (n + 1)) / 2;

for (n = 1; n <= nMax; ++n) {
    if (n != nMax)
    // insert comma and space after each interval
      pat.innerHTML += formula + ", ";
    else
    // append ellipsis after last interval
      pat.innerHTML += formula + ",&hellip;";
}

如何将公式存储在变量中并使用它而不会产生意外结果?

4 个答案:

答案 0 :(得分:7)

将公式放在函数中:

function formula(n) { return n * (n + 1) / 2; }

然后你可以打电话给它:

pat.innerHTML = formula(n) + ", ";

答案 1 :(得分:7)

动态评估变量,因此如果您想稍后更改参数,则需要将其存储为函数:

var formula = function(n){return (n * (n + 1)) / 2;}

//and then you can use
pat.innerHTML += formula(n)

这使得公式成为对带有数字的函数的引用,并返回您想要应用于该数字的公式。然后你可以使用公式(n)调用它,其中n是你想要将函数应用到

的数字

答案 2 :(得分:2)

你可以使你的公式变量成为一个带有整数“n​​”的函数。

var pat = document.getElementById("pattern");
var nMax = 10; // max number of intervals
var n = 1;

function formula(n){
 return (n * (n + 1)) / 2};
for (n = 1; n <= nMax; ++n) {
    if (n != nMax)
    // insert comma and space after each interval
      pat.innerHTML += formula(n) + ", ";
    else
    // append ellipsis after last interval
      pat.innerHTML += formula(n) + ",&hellip;";
}
<body>
    <p id="pattern"></p> 
</body>

答案 3 :(得分:1)

你想要创造的是一种功能,你的尝试非常接近。

创建一个函数并将其分配给您编写的变量

var formula = function( arguments ){ /* function statements */ }

在你的情况下,它将是

var formula = function(n){ return (n * (n + 1)) / 2; }

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

或者,为了减少烦恼,可以使用ES2015(EcmaScript 6)箭头函数表达式。请记住,它是一项新功能,并不是所有浏览器都支持,但它是JavaScript在不久的将来的发展方向。

var formula = (n) => (n * (n + 1)) /2;

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions