概述
编译过程:分词/词法分析;解析/语法分析;代码生成
词法作用域:定义在词法阶段的作用域
相关概念:
作用域:是一套规则,定义了引擎如何在作用域中通过标识符名称对变量进行查找
作用域工作模型:词法作用域、动态作用域
词法化:编译器工作的第一阶段,即对代码中的字符进行检查。如果是有状态的解析还会赋予单词语义
1.性能问题:
①.js引擎会在编译阶段进行性能优化,其中部分优化依赖于对词法作用域的静态分析;
②.eval函数和with关键字会欺骗词法作用域(eval动态修改,with凭空创建新的),从而导致词法作用域中变量和函数的定义位置无法事先确定;
③.js引擎发现代码中的eval和with后,会判别无法事先做优化,故直接放弃
2.严格模式下不允许使用:"use strict"
3.网络安全问题:
eval()会将接收的字符串解析为js代码,容易被恶意植入
(详情不作展开,暂不了解)
最后
以上就是贤惠白羊为你收集整理的为什么尽量不要使用eval函数和with关键字的全部内容,希望文章能够帮你解决为什么尽量不要使用eval函数和with关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复