How do I pass variables between functions in Javascript?

You need to either pass it between them, or it seems from your example, just declare it in a higher scope:

var str;
function a(){
function b(){
  var something = str +" second"; //new is reserved, use another variable name

Use function parameters, like this:

function a() {
   var str = "first";

function b(s) {
   var concat = s + " second";
   //do something with concat here...

You could just declare a variable higher up in the scope chain, but I opt to use arguments to restrict variable access to only the contexts that absolutely need it.

Oh yeah, isn't that called the principle of least privilege?