参数
1、参数是局部变量,优先级高于同名的全局变量
2、是为了解决函数的抽象化,多态化。具备模块化功能
3、js因为是弱引用语言,参数可以多样化改变,但也因此造成函数中需要对参数做大量的判断
4、参数也可以做为递归函数中初始设置变量
5、在多函数中,参数可以被作为中介值来回传递,并且处理。减少全局变量
6、js中参数没有初始值(ES5),参数是没有类型区分(所以自己要加上大量判断),
参数的先后问题(必要的参数在前,不必要的参数在后),(ES5)参数没有若干(…arg)但是arguments
return
1、使用return跳出函数,条件作用时,使用return可以解决多分支结构
return使用跳出时直接跳出循环或者条件,返回undefined
使用return可以在setInterval或者快速连续调用时用于防抖
使用return可以完成函数的开关操作
2、工厂模式
利用ce创建多个元素,每个元素都不一样,但是采用的一套模式生产的元素。
3、单例模式
单例一:
function createElem(){
if(elem) return elem;
elem=document.createElement("div");
return elem;
}
单例二:
function createElem(){
if(!elem) elem=document.createElement("div");
return elem;
}
单例三:
class Box{
static _instance
constructor(){
}
static getInstance(){
if(!Box._instance)Box._instance=new Box();
return Box._instance;
}
}
var a=Box.getInstance
var b=Box.getInstance;
console.log(a===b);
单例四:
class Box{
constructor(){
}
static get instance(){
if(!Box._instance){
Object.defineProperty(Box,"_instance",{
value:new Box()
})
}
return Box._instance;
}
play(){
console.log("play");
}
run(){
console.log("run");
}
}
var a=Box.instance
var b=Box.instance;
console.log(a===b);
4、返回参数对象
5、如果参数是函数,返回回调函数的结果
function fn1(fn){
return fn(5,6);
}
function fn2(a,b){
return a+b;
}
var sum=fn1(fn2);
console.log(sum);
6、返回数组或者对象,用于返回多个元素
7、返回函数体
function fn(){
return function(){
console.log("aaa");
}
}
var f=fn();
f();
f();