版权声明:内容多为自言自语,请自行判断有无价值。 https://blog.csdn.net/weixin_41702247/article/details/82810183
编译过程:分词/词法分析;解析/语法分析;代码生成
词法作用域:定义在词法阶段的作用域
相关概念:
作用域:是一套规则,定义了引擎如何在作用域中通过标识符名称对变量进行查找
作用域工作模型:词法作用域、动态作用域
词法化:编译器工作的第一阶段,即对代码中的字符进行检查。如果是有状态的解析还会赋予单词语义
1.性能问题:
①.js引擎会在编译阶段进行性能优化,其中部分优化依赖于对词法作用域的静态分析;
②.eval函数和with关键字会欺骗词法作用域(eval动态修改,with凭空创建新的),从而导致词法作用域中变量和函数的定义位置无法事先确定;
③.js引擎发现代码中的eval和with后,会判别无法事先做优化,故直接放弃
2.严格模式下不允许使用:"use strict"
3.网络安全问题:
eval()会将接收的字符串解析为js代码,容易被恶意植入
(详情不作展开,暂不了解)