函数的相关素养
高内聚 低耦合 ->模块的单一责任制
解耦合 提取相同代码
var a=1 声明的局部变量
var a=b=1 b为全局的。先b=1再a=b
立即执行函数
1.自动执行,执行完成立即释放
2.立即执行函数-初始化函数
(function(){
})();
(function(a,b){
console.log(a+b) //3
}(//实参,例如1,2));//w3c建议
call/apply 必考
function test(){
console.log(‘a’);
}
test(); //相当于test.call();
function Car(brand,color) {
this.brand=brand;
this.color=color;
}
var newCar={};
Car.call(newCar,‘Benz’,‘red’)
Car.apply(newCar,[‘Benz’,‘red’])
实际上把this改成了newCar。指向变成了newCar
这样可以通过newCar拿到function里面的参数,函数。
function Compute(){
this.plus=function (a,b) {
console.log(a+b)
}
this.minus=function (a,b) {
console.log(a-b)
}
}
function FullCompute(){
Compute.apply(this)
this.mul=function (a,b) {
console.log(a*b)
}
this.div=function (a,b) {
console.log(a/b)
}
}
var Compute=new FullCompute();
callee/calller
function test(a,b,c){
console.log(arguments.callee) 可以找到对应的函数 这里打印test
test.length=3 形参有3个,abc
arguments.length=2 实参只传了2个
返回函数括号里面的参数长度
}
test(1, 2)
caller会打印谁调用了它
test1()
function test1() {
test2();
}
function test2() {
console.log(test2.caller());//打印test1
}