js垃圾(程序不用了的变量)回收:就是从内存释放不用的空间
js解析引擎自带垃圾回收算法 1.计数法 2.标记清除
全局变量不会被自动回收
局部变量才会被垃圾回收
var name = "张三";
name = undefined;//手动释放空间
var per = {};
per = null;//手动释放引用数据类型
function print(){
var test1 = "l1";//局部变量,当函数调用完以后,内部的变量会被自动回收
// 如果函数内部的局部变量在其他代码块有使用,也不会被自动回收
}
print()
回调函数:把函数作为参数传递给另一个函数
函数内部的变量可以通过回调函数传递给另一个函数
function counta(callback){
var name = 10;
var age = 20;
callback(name,age);
}
function f(x,y){
console.log("f",x,y);
}
// counta(f);
闭包:函数内部返回一个函数
把函数内部的变量变成全局变量
function f1(){
var x = 10;
function f1_2(){
console.log(x);
}
f1_2()
}
var f2 = f1();//等价于 f2 = function(){console.log(x)}
f2()// f2是全局变量,所以f1 return的函数内部的变量不会被自动回收
实现局部变量的累加
function add(){
var num = 1;
return function(){
num ++;
return num;
}
}
let f3 = add();//等价于f3 = function(){num ++;return num;}
f3()
f3()
console.log(f3())//4
立即调用函数表达式
let f4 = function(){
console.log("f4")
} ()
(function(x){
console.log(x)
}(3))