-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Bug report or feature request?
bug
ES5 or ES6+ input?
ES6
Uglify version (uglifyjs -V
)
uglify-es 3.3.8
JavaScript input
var test = (function(){
function inlinedFunction(data) {
return {
children: data,
count: data.reduce(function(a, b) {
return a + b;
})
}
}
function testMinify(){
if(true) {
const data = inlinedFunction([1,2,3]);
if(this.someFunction) {
this.someFunction(data);
}
}
}
return testMinify();
})();
The uglifyjs
CLI command executed or minify()
options used.
uglifyjs -b -c -m -- test.js
JavaScript output or error produced.
Chrome gives an 'Uncaught ReferenceError: n is not defined' error on line 5 when the minified output is pasted into the console and run, because it's trying to assign to 'n' as a variable and a constant.
The minified output looks like the following:
var test = function() {
return function() {
{
const n = {
children: n = [ 1, 2, 3 ],
count: n.reduce(function(n, t) {
return n + t;
})
};
this.someFunction && this.someFunction(n);
}
var n;
}();
}();
Actually encountered it elsewhere, but this is as simple as I can get the test case. Both the inlined function and the containing function seem to need to use their variables twice, otherwise it's all optimized away. The conditional is also necessary, though it doesn't have to be if(true)
, just using that as an example.