-2

I am curious why this won't alert my greeting. The code:

function myNameWelcome(userName, thought) {
  var greeting = "Welcome pardner, so your're name is " + userName + ". " + thought;
  return greeting;
}

myNameWelcome("Peter", "Shine on you crazy diamond.");

alert(greeting);
Cœur
  • 34,719
  • 24
  • 185
  • 251

3 Answers3

1

Your return value isn't being assigned to anything outside of the function.

Jason Sperske
  • 28,710
  • 8
  • 67
  • 121
1

greeting is out of scope. It was defined inside the function so it's not available at the scope you're calling alert(greeting);. Fixing this is easy:

var greeting;
function myNameWelcome(userName, thought) {
  greeting = "Welcome pardner, so your're name is " + userName + ". " + thought;
}

myNameWelcome("Peter", "Shine on you crazy diamond.");

alert(greeting);

or even better:

function myNameWelcome(userName, thought) {
  return "Welcome pardner, so your're name is " + userName + ". " + thought;
}

var greeting = myNameWelcome("Peter", "Shine on you crazy diamond.");

alert(greeting);
Tiago Marinho
  • 2,078
  • 16
  • 35
0

Because greeting is a local variable only accessible within myNameWelcome. It does not exist outside of the function.

See What is the scope of variables in JavaScript? to learn more about variable scope.

Community
  • 1
  • 1
Felix Kling
  • 756,363
  • 169
  • 1,062
  • 1,111