js的小技巧
2019-04-04 本文已影响0人
benbensheng
1.使用对象为函数参数,这时候可以传入多个参数
function ben(arg){
var name=arg.name;
var age=arg.age;
var sex=arg.sex;
console.log(arguments);
}
var person={
"name":"ben",
"age":10,
"sex":"men"
}
ben(person);
2.使用函数的arguments来确定函数参数的个数
function ben(name,age){
if(arguments.length!=2){
console.log("参数为2个")
}
console.log(arguments);
}
ben("ben",12,4);
ben("ben",12);
应用:传入参数个数不同,函数的结果不同
//传入参数name age打印出name age
//传入参数name age sex打印出name age sex
function ben(name,age,sex){
if(arguments.length==2){
var age=age;
var sex="";
}else if(arguments.length==3){
var age=age;
var sex=sex;
}else{
console.log("参数错误");
return;
}
console.log(name+age+sex);
}
ben("ben",12,"men");
ben("ben",12);
3. callback的调用陷入循环
function ben(callback){
var a=[1,2,3,4,5,6];
for(var i=0;i<a.length;i++){
callback(a[i]);
}
}
ben(function(a){
console.log(a);
console.log("循环");
})
/*
1
循环
2
循环
3
循环
4
循环
5
循环
6
循环
*/
//决解办法,将数据push进数组,统一返回
function ben(callback){
var result =[];
var a=[1,2,3,4,5,6];
for(var i=0;i<a.length;i++){
result.push(a[i]);
}
callback(result);
}
ben(function(result){
console.log(result);
console.log("循环");
})
4.new Date()的时间格式化
写入Date的原型
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}
调用:
var datetime = new Date(); //实例化
var formatDate=datetime.format("yyyy-MM-dd hh:mm:ss:S")
或者直接
var formatDate = (new Date() ).format("yyyy-MM-dd hh:mm:ss:S")
5. 使用for..in..遍历对象
var arr={
"a":a,
"b":b,
"c":c
};
for (var i in arr){
console.log(i,":",arr[i]);
}