A have a question about JavaScript.
Why this works:
function orbitalPeriod(arr) {
   
   function orbitalPeriodInside(inputData) {
    const GM = 398600.4418;
    const earthRadius = 6367.4447;
    let averageAltitude = inputData.avgAlt;
    let myNewObj = {};
    let upperPartBeforePow = earthRadius + averageAltitude;
    let upperPartAfterPow = Math.pow(upperPartBeforePow, 3);
    let dividedByLowerPart = upperPartAfterPow / GM;
    let sqrt = Math.sqrt(dividedByLowerPart);
    let orbitalPeriodT = 2 * 3.14159265359 * sqrt;
    let orbitalPeriodTRound = Math.round(orbitalPeriodT);
  
    myNewObj.name = inputData.name;
    myNewObj.orbitalPeriod = orbitalPeriodTRound;
    return myNewObj;
  }
 
  let results = arr.map(function(oneObj) {
    return orbitalPeriodInside(oneObj);
  });
  console.log(results);
  return results;
}
orbitalPeriod([{name: "iss", avgAlt: 413.6},
  {name: "hubble", avgAlt: 556.7},
  {name: "moon", avgAlt: 378632.553}]);
//should return [
//{name : "iss", orbitalPeriod: 5557},
//{name: "hubble", orbitalPeriod: 5734},
//{name: "moon", orbitalPeriod: 2377399}
//].  And why this doesn't:
    function orbitalPeriod(arr) {
      
       let results = [];
       
       function orbitalPeriodInside(inputData) {
        const GM = 398600.4418;
        const earthRadius = 6367.4447;
        let averageAltitude = inputData.avgAlt;
        let myNewObj = {};
        let upperPartBeforePow = earthRadius + averageAltitude;
        let upperPartAfterPow = Math.pow(upperPartBeforePow, 3);
        let dividedByLowerPart = upperPartAfterPow / GM;
        let sqrt = Math.sqrt(dividedByLowerPart);
        let orbitalPeriodT = 2 * 3.14159265359 * sqrt;
        let orbitalPeriodTRound = Math.round(orbitalPeriodT);
      
        myNewObj.name = inputData.name;
        myNewObj.orbitalPeriod = orbitalPeriodTRound;
        return myNewObj;
      }
     
      results = arr.map(function(oneObj) {
        return orbitalPeriodInside(oneObj);
      });
      console.log(results);
      return results;
    }
    orbitalPeriod([{name: "iss", avgAlt: 413.6},
      {name: "hubble", avgAlt: 556.7},
      {name: "moon", avgAlt: 378632.553}]);
    //should return [
    //{name : "iss", orbitalPeriod: 5557},
    //{name: "hubble", orbitalPeriod: 5734},
    //{name: "moon", orbitalPeriod: 2377399}
    //].The only difference is declaration of 'let results'. Second example - the declaration is in top of the function but it won't work. This second function returns only 'use strict'. Why?
