0
How would I use a var from inside a function, outside of that function?
For instance, how would I get this short script to call the saved value from the variable "name" inside the function 'askName' and output the result inside the function 'calculateTwoNumbers'? function askName() { var name = prompt("What is your name?"); if (name === null) { alert("Why did you cancel?"); askName(); } else if (name === "") { alert("You didn\'t enter anything."); askName(); } else { alert("Hello, " + name + ("! How are you?")); return name; } } function calculateTwoNumbers() { alert("Well, " + name + ". Next step is calculating...") var num1 = +prompt("What is the first number you want to calculate?"); } askName(); calculateTwoNumbers(); Thank you.
10 Respuestas
+ 3
The key concept here is the 'variable scope'...
When you define functions, you declare a block of instructions wich define a scope for variables created inside:
function myFunc() {
var myLocalVar = 42;
alert(myLocalVar); // output 42
}
... trying to access them outside of the myfunc() scope, will fail: the variable is hidden from outside the scope:
function myFunc() {
var myLocalVar = 42;
alert('myLocalVar = '+myLocalVar); // output "myLocalVar = 42"
}
myFunc(); // execute myFunc block of code, so output 42
alert('myLocalVar = '+myLocalVar); // output "myLocalVar = undefined"
In the same way, myLocalVar isn't visible from another function defined outside of myFunc() ^^
Now, defining a variable outside of a local scope define it in an implicit 'global' scope:
var myGlobalVar = 42;
function myFunc() {
alert(myGlobalVar); // output 42 because myFunc() and myGlobalVar share the same scope
}
function mySecondFunc() {
alert(myGlobalVar); // output 42 because mySecondFunc() share also the same scope
}
function myThirdFunc() {
var myGlobalVar = -1; // the 'var' keyword define an explicit local scope var, which will hide the same named global scope var, without changing it's value
alert(myGlobalVar); // so output -1
}
myThirdFunc(); // call third function, so output -1, but...
alert(myGlobalVar); // still output 42, as...
myFunc(); // also still output 42
As previously explained by @Tiago Soares, the other way to export variables from their local scope is to return values used/calculated ;)
+ 2
In function askName () return the value of name variable. Then inside the function calculateTwoNumbers () you call the function askName ().
For example: If you need the value only for alert, use: alert (askName ()); or if you need the value for a variable: var anything = askName ();
+ 1
I adapted your code. Please see the comments I wrote, and the result of the code
https://code.sololearn.com/WAY1a42ekyWD/?ref=app
+ 1
Thank you Tiago, I think I understand now!
+ 1
You have to notice two things:
1) alert () is a function that displays the text/value (it can be a text inside quotes or a variable) you provide inside its parentheses (i.e parameters)
2) As the function askName() returns a value, it works like a variable. Is a little difficult? Let's see these examples
Example I:
function askName (){
var name = "Test";
return name;
}
askName ();
//Does not display anything, the computer only created name variable assigned as "Test"
Example II:
function askName (){
var name = "Test";
return name;
}
function foo {
var otherName = askName ();
alert (otherName);
}
foo ();
//Displays "Test"
Example III:
function askName (){
var name = "Test";
return name;
}
alert (askName ());
//Displays "Test"
+ 1
Thank you Tiago, very clear and easy to understand answer, much appreciated.
I'll keep playing with functions and variables and hopefully get the hang of them, as they say, practice makes perfect!
0
How would I return the value of the name variable?
I've tried return askName(); but it just loops the askName function?
Thank you.
0
This is working:
function askName() {
var name = prompt("What is your name?");
if (name === null) {
alert("Why did you cancel?");
askName();
} else if (name === "") {
alert("You didn\'t enter anything.");
askName();
} else {
alert("Hello, " + name + ("! How are you?"));
return name;
}
}
function calculateTwoNumbers() {
alert("Well, " + askName() + ". Next step is calculating...")
var num1 = +prompt("What is the first number you want to calculate?");
}
calculateTwoNumbers();
But I don't understand why? How is it running the function 'askName', when the end of the code is only calling for calculateTwoNumbers, I apologize for the "noob" questions, I'm obviously overlooking something here.
0
Inside calculateTwoNumbers () you have an alert: alert ("Well, " + askName () + ".Next step is calculating...")
The askName () is calling the askName () function
No problem for asking, you learn from it
0
I see, so even inputting a function name inside an alert or prompt, will call that function?
I thought it had to be a separate statement to call the function, I guess I have a lot more research to be doing...