我是靠谱客的博主 贤惠白羊,最近开发中收集的这篇文章主要介绍为什么尽量不要使用eval函数和with关键字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编译过程:分词/词法分析;解析/语法分析;代码生成

词法作用域:定义在词法阶段的作用域


相关概念:

    作用域:是一套规则,定义了引擎如何在作用域中通过标识符名称对变量进行查找
    作用域工作模型:词法作用域、动态作用域
    词法化:编译器工作的第一阶段,即对代码中的字符进行检查。如果是有状态的解析还会赋予单词语义

1.性能问题:

①.js引擎会在编译阶段进行性能优化,其中部分优化依赖于对词法作用域的静态分析;

②.eval函数和with关键字会欺骗词法作用域(eval动态修改,with凭空创建新的),从而导致词法作用域中变量和函数的定义位置无法事先确定;

③.js引擎发现代码中的eval和with后,会判别无法事先做优化,故直接放弃

2.严格模式下不允许使用:"use strict"

3.网络安全问题:

eval()会将接收的字符串解析为js代码,容易被恶意植入

(详情不作展开,暂不了解)

最后

以上就是贤惠白羊为你收集整理的为什么尽量不要使用eval函数和with关键字的全部内容,希望文章能够帮你解决为什么尽量不要使用eval函数和with关键字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部