foo(){
  if [ -z "${1}" ]; then
    echo "hi: ${hi}"
    echo "hi_without_local: ${hi_without_local}"
  else
    local hi="${1}"
    hi_without_local="${1}"
 
    echo "Saved values."
  fi
}
 
main() {
  foo "hello"
  foo
}
 
main "${@}" || exit 1

Output:

Saved values.
hi:
hi_without_local: hello