For input, ```js const variable = false ;(function () { eval("var variable = true") console.log(variable) })() ``` esbuild outputs ```js const variable=!1;(function(){eval("var variable = true"),console.log(!1)})(); ``` when minified. [esbuild try](https://esbuild.github.io/try/#dAAwLjI0LjIALS1taW5pZnkAY29uc3QgdmFyaWFibGUgPSBmYWxzZQo7KGZ1bmN0aW9uICgpIHsKICBldmFsKCJ2YXIgdmFyaWFibGUgPSB0cnVlIikKICBjb25zb2xlLmxvZyh2YXJpYWJsZSkKfSkoKQ) This changes the behavior of the code (`true` is output before minification, but `false` is output after minification). I guess it's because the fact that [variable declarations inside direct eval leaks to the outside scope in non-strict mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#direct_and_indirect_eval:~:text=var%2Ddeclared%20variables%20and%20function%20declarations%20would%20go%20into%20the%20surrounding%20scope%20if%20the%20source%20string%20is%20not%20interpreted%20in%20strict%20mode) is not taken into account when replacing constants. (Note: this is not what I encountered in a real world usage. I found it when trying to know about the direct eval support in esbuild.) <!-- When reporting a bug or requesting a feature, please do the following: * Describe what esbuild is doing incorrectly and what it should be doing instead. * Provide a way to reproduce the issue. The best way to do this is to demonstrate the issue on the playground (https://esbuild.github.io/try/) and paste the URL here. A link to a minimal code sample with instructions for how to reproduce the issue may also work. Issues without a way to reproduce them may be closed. -->