Para pessoas como eu, que não aprenderam JavaScript sistematicamente no início, o primeiro sentimento quando vi o with foi de excitação - não preciso mais escrever "element.style.xxx = ..." repetidamente, só preciso
visualizar cópia simples para impressão da área de transferência?
com (element.style) {
xxx = ...;
aa = ...;
...
}
com (element.style) {
xxx = ...;
aa = ...;
...
}Mas como uma linguagem interpretada, o JavaScript precisa determinar o que é xxx/yyy em tempo de execução. Para cada nome (não apenas atribuído, mas também lido por variáveis!), ele primeiro procurará as propriedades do objeto entre colchetes, depois as variáveis locais e, finalmente, as variáveis globais. Antes da popularidade das máquinas virtuais JavaScript e da tecnologia JIT, esse tipo de problema de desempenho requer muita atenção.
A abordagem correta é criar um cache de variável local para element.style:
visualizar plaincopy para clipboardprint?
vares = elemento.estilo;
es.xxx = ...;
es.aaaa = ...;
...
var es = elemento.style;
es.xxx = ...;
es.aaaa = ...;
...Isso não apenas reduz relativamente o tamanho do código, mas também tem um desempenho muito melhor do que element.style.xxx = ....