File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed
1-js/06-advanced-functions/07-new-function Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -92,7 +92,7 @@ getFunc()(); // *!*"test"*/!*,从 getFunc 的词法环境中获取的
92
92
93
93
问题在于,在将 JavaScript 发布到生产环境之前,需要使用 ** 压缩程序(minifier)** 对其进行压缩 —— 一个特殊的程序,通过删除多余的注释和空格等压缩代码 —— 更重要的是,将局部变量命名为较短的变量。
94
94
95
- 例如,如果一个函数有 ` let userName ` ,压缩程序会把它替换为 ` let a ` (如果 a 已被占用了,那就使用其他字符),剩余的局部变量也会被进行类似的替换。一般来说这样的替换是安全的,毕竟这些变量是函数内的局部变量,函数外的任何东西都无法访问它。在函数内部,压缩程序会替换所有使用了使用了这些变量的代码 。压缩程序很聪明,它会分析代码的结构,而不是呆板地查找然后替换,因此它不会“破坏”你的程序。
95
+ 例如,如果一个函数有 ` let userName ` ,压缩程序会把它替换为 ` let a ` (如果 a 已被占用了,那就使用其他字符),剩余的局部变量也会被进行类似的替换。一般来说这样的替换是安全的,毕竟这些变量是函数内的局部变量,函数外的任何东西都无法访问它。在函数内部,压缩程序会替换所有使用了这些变量的代码 。压缩程序很聪明,它会分析代码的结构,而不是呆板地查找然后替换,因此它不会“破坏”你的程序。
96
96
97
97
但是在这种情况下,如果使 ` new Function ` 可以访问自身函数以外的变量,它也很有可能无法找到重命名的 ` userName ` ,这是因为新函数的创建发生在代码压缩以后,变量名已经被替换了。
98
98
You can’t perform that action at this time.
0 commit comments