return
1.return返回,跳出
2.如果return后面不跟值,直接跳出返回undefined,跳出后,后面的语句就不再执行了
3.return 只能返回1个值,如果返回多个值,就用对象
4.函数执行时一般都会有返回值的,如果使用return,就会将return后面的内容返回出来;如果没有return 返回undefined
function fn(){
return;
return 1,2,3;//返回最后一个
return 1;//当使用return时,直接跳出,不会继续执行后面的语句
return 2;
return 3;
return [1,2,3];
return {
a:1,
b:2,
c:3
}
}
5.return可以省略很多向后执行的条件
function getNumberToCN(num){
if(num<0) return "错误的数值";
if(num<10) return arr[num];
if(num===10) return "十";
if(num%10===0) return arr[num/10]+"十";
if(num<20) return "十"+arr[num%10];
return arr[parseInt(num/10)]+"十"+arr[num%10];
}
var str=getNumberToCN(30);
console.log(str);
定时器setInterval
var ids=setInterval(function(){
console.log("a");
},16);
var bool=true;
document.onclick=function(){
bool=!bool;
if(!bool) clearInterval(ids);//停止
else ids=setInterval(function(){
console.log("a");
},16);
}
点击实现开关,代码如下
var bool=true;
document.onclick=function(){
bool=!bool;
}
setInterval(function(){
if(!bool) return;
console.log("a");
},16);
return部分特征
1.返回对象
工厂模式
function createObj(){
var obj={a:1,b:2};
return obj;
}
var o1=createObj();
var o2=createObj();
console.log(o1===o2);//false
这种代码每次都会返回一个新的内容
function tagHTML(tagName){
var str="";
var bool=false;
switch(tagName){
case "hr":
case "br":
case "img":
case "input":
case "meta":
case "link":
bool=true;
}
str="<"+tagName+">"+(bool ? "" : "</"+tagName+">");
return str;
}
console.log(tagHTML("div"));//<div></div>
console.log(tagHTML("input"));//<input>
特征:
var新建一个,并且返回新建的东西;
提供材料(输入),生成产品;
没有输入,每次产生的都是不同的产品,但是是相同类型
都不相同,没有重复的
单例模式
工厂模式的变形
var obj;
function createObj(){
//1.
// if(obj) return obj;
// return obj={a:1,b:2};
//2
// if(!obj)obj={a:1,b:2};
// return obj;
//3
return obj || (obj={a:1,b:2});
}
var o1=createObj();
var o2=createObj();
console.log(o1===o2);//true
2.返回函数
//返回一个有名函数
function getSum1(){
var fn=function(){
}
return fn;
}
//返回匿名函数
function getSum2(){
return function(){
}
}
函数在返回函数的过程中:返回函数执行结果/返回函数
function getSum1(){
var fn=function(){
return 5;
}
return fn();//返回执行的结果
}
function getSum2(){
var fn=function(){
return 5;
}
return fn;//返回函数
}
getSum2()();//返回fn执行结果
对象里的函数
1.在对象中调用对象内的属性必须使用this.来调用
2.在对象中this代表这个引用地址对应的对象
3.属性不能使用this。这个时候this指window
var obj={
a:1,
c:this.a,//属性不能使用this。这个时候this指window
b:function(){
// 在对象中调用对象内的属性必须使用this.
// return this.a+1;
// console.log(a);//没有变量a
console.log(obj.a);
console.log(this.a);//在对象中this代表这个引用地址对应的对象
console.log("b");
return this;
},
d:function(){
console.log("d");
return this;
}
}
var o=obj;
obj={c:10};
obj.b();
//这种情况下,obj的引用变了,如果在console.log(obj.a),执行结果为undefined,所以就用this.a
obj.b().d();//连缀,return this