功能无效的Javascript问题(将分数转换为小数)

时间:2015-02-24 20:08:20

标签: javascript function decimal fractions

我们说我有一个字符串(就像一小部分);

var num = "1/2";

为什么这样做:

var y = num.split(' ');
if (y.length > 1) {
    var z = y[1].split('/');
    var a = (+y[0] + (z[0] / z[1]));
    num = a;
} else {
    z = y[0].split('/');
    if (z.length > 1) {
        a = (z[0] / z[1]);
        num = a;
    }
}

alert(num); //The alert box shows my variable now as a decimal.

这并不是:

function parseFractions(x) {
    var y = x.split(' ');
    if (y.length > 1) {
        var z = y[1].split('/');
        var a = (+y[0] + (z[0] / z[1]));
        x = a;
    } else {
        z = y[0].split('/');
        if (z.length > 1) {
            a = (z[0] / z[1]);
            x = a;
        }
    }
}

parseFractions(num); //Here I call my function.

alert(num);
//The alert box does not even show up. The fraction isn't converted into a decimal.

它基本上是一回事,唯一的区别是在第二个我尝试将其变成一个函数,因此每次尝试转换时我都不必重复这些代码行分数为小数。

那么我做错了什么?我想用功能完成什么?对此问题的任何启发都表示赞赏!

2 个答案:

答案 0 :(得分:2)

num的值未更新,不会通过引用传递。

function parseFractions(x) {
    var y = x.split(' ');
    if (y.length > 1) {
        var z = y[1].split('/');
        var a = (+y[0] + (z[0] / z[1]));
        x = a;
    } else {
        z = y[0].split('/');
        if (z.length > 1) {
            a = (z[0] / z[1]);
            x = a;
        }
    }
    return x;
}

num = parseFractions(num);  //set num with the value return from the method
alert(num);

答案 1 :(得分:0)

您需要返回您的值

在函数末尾添加一个返回值

return x;

Adn然后用

调用该函数
alert(parseFractions(num)); //Here I call my function.