每天一个知识点

484 阅读1分钟

with介绍

with是js中的一个关键字,作用是改变代码块中的作用域

注:严格模式下无法使用with

基本用法

通过with可以将作用域传入给代码块,代码块中的值都会从传入的作用域中查找

//通过with修改对象下的值
var obj = {
	a: 1,
	b: 2,
	c: 3
};
with (obj) {
	a = 3;
	b = 4;
	c = 5;
}

with的弊端

内存泄漏

如果with中代码块的值不在传入的作用域上,就会将值赋到window对象上

var obj = {
	a: 1
};
with (obj) {
	a = 3;
	b = 4;
}

性能下降

JavaScript 引擎会在编译阶段进行数项的性能优化,有些优化依赖于根据代码的词法进行静态分析,但with中的作用域是无法预知的,造成js引擎无法优化