I wrote simple code like this
var value = function(a){return a*3;}
var number = value(a);
when i type value(5);
i will get number 15 thats OK, but after typing number;
ill get NaN
.
I just want to write in variable the result of function.
I wrote simple code like this
var value = function(a){return a*3;}
var number = value(a);
when i type value(5);
i will get number 15 thats OK, but after typing number;
ill get NaN
.
I just want to write in variable the result of function.
JavaScript is not a computer algebra system, and it cannot store an algebraic expression like x * 3
in a variable. Instead, when you do:
var y = x * 3;
the variable y
will be set to 3 times the value that x
had when that statement was executed. If no value has been assigned to x
before, then its default value will be undefined
. And according to JavaScript's arithmetic rules undefined
is automatically converted to NaN
when used in an arithmetic expression, and NaN * 3
equals NaN
.
(Actually, what you should be getting, if you try to execute the code above without declaring the variable x
first, is a ReferenceError: x is not defined
exception. But if you add a var x;
statement before that code, to declare the variable x
but leave its value undefined, then you'll indeed get NaN
as the value of y
.)
The fact that you've wrapped the multiplication inside a function makes no difference here. The following code:
var f = function (a) { return a * 3 };
var y = f(x);
does exactly the same thing as:
var y = x * 3;
(except, of course, for the fact that the former version also defines the function f
.)