You variable is indeed defined, but not in the current scope. Simply, return the variable values from the functions in the verify function:
// verify
function verify() {
  function stringv() {
    let name = window.prompt('please enter your name:');
    if (name === null || name === "") {
      alert('please enter your name!')
      stringv();
    } else if (!/^[a-zA-Z]+$/.test(name)) {
      alert("your entered name isn't allowed!")
      stringv();
    } else {}
    return name
  }
  function stringln() {
    let lastn = window.prompt('please enter your lastname');
    if (lastn === null || lastn === "") {
      alert('please enter your lastn!')
      stringln();
    } else if (!/^[a-zA-Z]+$/.test(lastn)) {
      alert("your entered lastname isn't allowed")
      stringln();
    } else {}
    return lastn
  }
  function agev() {
    let age = "invalid"
    let errorMessage = ""
    while (!(age > 0)) {
      age = window.prompt(errorMessage + 'Enter ur Age');
      errorMessage = "'"
      ' + age + '
      " isn't a number"
    }
    return age
  }
  // Function calling
  let name = stringv();
  let lastn = stringln();
  let age = agev();
  // console.log 
  let output;
  output = 'Hello ' + name + ' ' + lastn + ' ' + age + '-years-old';
  console.log(output)
}
<button onclick="verify()">Enter Your name:</button>