-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
  • 37,241
  • 25
  • 195
  • 267

3 Answers3

1

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

Jason Sperske
  • 29,816
  • 8
  • 73
  • 124
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,146
  • 17
  • 37
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
  • 795,719
  • 175
  • 1,089
  • 1,143