内容
一样平常平凡编写代码的时刻很少关注细节,对javascript深层也没详细相识,下面针对一样平常平凡写代码的情势剖析、调解完美本身的代码,这里以一个简朴例子剖析js作用域和渣滓接纳机制,经由过程块级作用域处置惩罚一些细节,提拔本身代码机能。
一般案例
在一样平常中最罕见的代码编写体式格局:
function do(arg) {
// 做一些事变
}
var doFunc = {...}
do(doFunc);
var btn = document.getElementById( "my_button" );
btn.addEventListener( "click", function click(evt){
console.log("button clicked");
});
如许编写情势的代码许多,许多时刻在编写的时刻也没注意这些题目,功用却是能完成,代码量少的时刻没事,然则当代码量大,事关代码机能,那就是两回事了。
简朴剖析
这里能够看到btn
的点击事宜和doFunc
基础没什么关联。这意味着从理论上讲,在 do(..) 运转以后,这个斲丧庞大内存的数据构造能够被作为渣滓接纳。但是,JS引擎极可能(虽然这要看详细完成)将会依然将这个构造坚持一段时间,由于click函数在全部作用域上具有一个闭包。
处置惩罚要领
在一样平常编写代码中巧用块儿作用域能够处理这个题目,我们主动让js引擎清晰的晓得它不必要再保留doFunc。
function do(arg) {
// 做一些事变
}
{
let doFunc = {...}
do(doFunc);
}
var btn = document.getElementById( "my_button" );
btn.addEventListener( "click", function click(evt){
console.log("button clicked");
});
声明能够将变量绑定在当地的明白的块儿是一种壮大的东西,连系本身的代码,合理运用,一步步改良本身的代码。