小白也能看懂的前端知识之七:为什么说eval和with会影响性能
前置知识:
js引擎在执行一段代码之前,会有一个语法分析的阶段,也就是预解析。这个阶段会做语法检查,比较低级的语法错误会在这个阶段被检测到并抛出错误。其次会确定每个变量的作用域,制定出作用域链,并绘制“抽象语法树”,也就是AST。以后的执行以及性能优化都是基于ASt来进行的
eval:
function foo (str, a) {
eval(str)
console.log(a, b)
}
var b = 2
foo('var b = 3', 1) // 1, 3
这段代码其实就相当于
var b
原创
2020-10-31 13:32:57 ·
1125 阅读 ·
0 评论