javascript中的with使用

在阅读underscore时,在模板引擎部分看到了with语句的使用

with 使用

例子:

1
2
var data = {test:10};
with(data){console.log(test)};

上面语句输出10

1
2
3
4
with(data){console.log(test)};

console.log(data.test);
效果一样,只是减少了前缀'data.'的输入

针对with语句,javascript解释器要检查块中的变量是否属于with传入的对象,与直接访问data.test相比,多了一步检查,对性能有所影响


在严格模式’use strict’模式下,with语句不能使用


目前基本都在使用严格模式,规范编码。with语句很少使用了。

underscore模板部分使用with语句的代码块:

if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

此处是为了使用模板传入的参数

本文地址: http://gehaiqing.com/2016/08/03/js-with/