emmett.js
function forIn(object, fn, scope) {
    var symbols,
        k,
        i,
        l;

    for (k in object)
      fn.call(scope || null, k, object[k]);

    if (Object.getOwnPropertySymbols) {
      symbols = Object.getOwnPropertySymbols(object);

      for (i = 0, l = symbols.length; i < l; i++)
        fn.call(scope || null, symbols[i], object[symbols[i]]);
    }
  }
function forIn(object, fn, scope) {
    var symbols,
        k,
        i,
        l;

    for (k in object)
      fn.call(scope || null, k, object[k]);

    if (Object.getOwnPropertySymbols) {
      symbols = Object.getOwnPropertySymbols(object);

      for (i = 0, l = symbols.length; i < l; i++)
        fn.call(scope || null, symbols[i], object[symbols[i]]);
    }
  }
function forIn ( object , fn , scope ) { var symbols , k , i , l ; for ( k in object ) fn . call ( scope || null , k , object [ k ] ) ; if ( Object . getOwnPropertySymbols ) { symbols = Object . getOwnPropertySymbols ( object ) ; for ( i = 0 , l = symbols . length ; i < l ; i ++ ) fn . call ( scope || null , symbols [ i ] , object [ symbols [ i ] ] ) ; } }
Iterate over an object that may have ES6 Symbols.

@param  {object}   object  Object on which to iterate.
@param  {function} fn      Iterator function.
@param  {object}   [scope] Optional scope.
Iterate over an object that may have ES6 Symbols .