我们说我有一个字符串(就像一小部分);
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.
它基本上是一回事,唯一的区别是在第二个我尝试将其变成一个函数,因此每次尝试转换时我都不必重复这些代码行分数为小数。
那么我做错了什么?我想用功能完成什么?对此问题的任何启发都表示赞赏!
答案 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.