<p dir="auto">I have the following options blacklisted</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="    &quot;blacklist&quot;: [
      'regenerator',
      'es6.constants',
      'es6.forOf',
    ]"><pre class="notranslate"><code class="notranslate">    "blacklist": [
      'regenerator',
      'es6.constants',
      'es6.forOf',
    ]
</code></pre></div>
<p dir="auto">Specifically - since I'm using chrome, no need to transform the supported const keyword.</p>
<p dir="auto">I wrote a function that looks like this:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="const getValue = (model, propertyPath) =&gt; {
    if(!propertyPath || propertyPath == '*')
        return model
    if(_.isUndefined(model) || model === null)
        return model //No such model, should this be an error?
    if(model.hasOwnProperty(propertyPath))
        return model[propertyPath]
    const [head, ...tail] = (propertyPath||'').split('.')
    if(!head)
        return undefined; //Property does not exist, Maybe should be an error? 
    return getValue(model[head], tail.join('.'))
}"><pre class="notranslate"><code class="notranslate">const getValue = (model, propertyPath) =&gt; {
    if(!propertyPath || propertyPath == '*')
        return model
    if(_.isUndefined(model) || model === null)
        return model //No such model, should this be an error?
    if(model.hasOwnProperty(propertyPath))
        return model[propertyPath]
    const [head, ...tail] = (propertyPath||'').split('.')
    if(!head)
        return undefined; //Property does not exist, Maybe should be an error? 
    return getValue(model[head], tail.join('.'))
}
</code></pre></div>
<p dir="auto">which compiles into</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="            const getValue = function getValue(_x8, _x9) {
                var _again = true;

                _function: while (_again) {
                    var model = _x8,
                        propertyPath = _x9;
                    _split = _split2 = head = tail = undefined;
                    _again = false;

                    if (!propertyPath || propertyPath == '*') return model;
                    if (_.isUndefined(model) || model === null) return model; //No such model, should this be an error?
                    if (model.hasOwnProperty(propertyPath)) return model[propertyPath];

                    var _split = (propertyPath || '').split('.');

                    var _split2 = _toArray(_split);

                    const head = _split2[0];

                    const tail = _split2.slice(1);

                    if (!head) return undefined; //Property does not exist, Maybe should be an error?
                    _x8 = model[head];
                    _x9 = tail.join('.');
                    _again = true;
                    continue _function;
                }
            };"><pre class="notranslate"><code class="notranslate">            const getValue = function getValue(_x8, _x9) {
                var _again = true;

                _function: while (_again) {
                    var model = _x8,
                        propertyPath = _x9;
                    _split = _split2 = head = tail = undefined;
                    _again = false;

                    if (!propertyPath || propertyPath == '*') return model;
                    if (_.isUndefined(model) || model === null) return model; //No such model, should this be an error?
                    if (model.hasOwnProperty(propertyPath)) return model[propertyPath];

                    var _split = (propertyPath || '').split('.');

                    var _split2 = _toArray(_split);

                    const head = _split2[0];

                    const tail = _split2.slice(1);

                    if (!head) return undefined; //Property does not exist, Maybe should be an error?
                    _x8 = model[head];
                    _x9 = tail.join('.');
                    _again = true;
                    continue _function;
                }
            };
</code></pre></div>
<p dir="auto">Note that at the top, we assign undefined to <code class="notranslate">tail</code> but it's only declared by <code class="notranslate">const</code> further down. Since <code class="notranslate">const</code> is block scoped this will break.</p>
<p dir="auto">Hi, I use <code class="notranslate">node@4.0.0</code>, so I add <code class="notranslate">es6.blockScoping</code> to babel blacklist, but an error occurred.</p>
<p dir="auto">The code:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function getFetchData(component = {}) {
  if (component.WrappedComponent) {
    return getFetchData(component.WrappedComponent);
  }
  return component.fetchData;
}"><pre class="notranslate"><span class="pl-k">function</span> <span class="pl-en">getFetchData</span><span class="pl-kos">(</span><span class="pl-s1">component</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
  <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">WrappedComponent</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">return</span> <span class="pl-en">getFetchData</span><span class="pl-kos">(</span><span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">WrappedComponent</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
  <span class="pl-k">return</span> <span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">fetchData</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Compile:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function getFetchData() {
  var _arguments = arguments;
  var _again = true;

  _function: while (_again) {
    component = undefined;
    _again = false;
    let component = _arguments.length &lt;= 0 || _arguments[0] === undefined ? {} : _arguments[0];

    if (component.WrappedComponent) {
      _arguments = [component.WrappedComponent];
      _again = true;
      continue _function;
    }
    return component.fetchData;
  }
}"><pre class="notranslate"><span class="pl-k">function</span> <span class="pl-en">getFetchData</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
  <span class="pl-k">var</span> <span class="pl-s1">_arguments</span> <span class="pl-c1">=</span> <span class="pl-smi">arguments</span><span class="pl-kos">;</span>
  <span class="pl-k">var</span> <span class="pl-s1">_again</span> <span class="pl-c1">=</span> <span class="pl-c1">true</span><span class="pl-kos">;</span>

  _function: <span class="pl-k">while</span> <span class="pl-kos">(</span><span class="pl-s1">_again</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-s1">component</span> <span class="pl-c1">=</span> <span class="pl-c1">undefined</span><span class="pl-kos">;</span>
    <span class="pl-s1">_again</span> <span class="pl-c1">=</span> <span class="pl-c1">false</span><span class="pl-kos">;</span>
    <span class="pl-k">let</span> <span class="pl-s1">component</span> <span class="pl-c1">=</span> <span class="pl-s1">_arguments</span><span class="pl-kos">.</span><span class="pl-c1">length</span> <span class="pl-c1">&lt;=</span> <span class="pl-c1">0</span> <span class="pl-c1">||</span> <span class="pl-s1">_arguments</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span> <span class="pl-c1">===</span> <span class="pl-c1">undefined</span> ? <span class="pl-kos">{</span><span class="pl-kos">}</span> : <span class="pl-s1">_arguments</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">;</span>

    <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">WrappedComponent</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
      <span class="pl-s1">_arguments</span> <span class="pl-c1">=</span> <span class="pl-kos">[</span><span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">WrappedComponent</span><span class="pl-kos">]</span><span class="pl-kos">;</span>
      <span class="pl-s1">_again</span> <span class="pl-c1">=</span> <span class="pl-c1">true</span><span class="pl-kos">;</span>
      <span class="pl-k">continue</span> _function<span class="pl-kos">;</span>
    <span class="pl-kos">}</span>
    <span class="pl-k">return</span> <span class="pl-s1">component</span><span class="pl-kos">.</span><span class="pl-c1">fetchData</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ReferenceError: component is not defined"><pre class="notranslate"><code class="notranslate">ReferenceError: component is not defined
</code></pre></div>
<p dir="auto">Because <code class="notranslate">let component</code> only define once.</p>
<p dir="auto">I think ES6 Default value should be to <code class="notranslate">var</code> rather than <code class="notranslate">let</code>.</p>