关于JS基础类型、复杂类型的总结;
- 基础类型(5种)
包括: Undefined、Null、String、Boolean、Number
值:由简单的数据段构成;
访问类型:按值访问,可操作保存在变量中的实际值;
var a=1;
var b=2;
b=a;
console.log(a) // 1
console.log(b) // 1
- 复杂类型
包括:Object、Arrar、Date、Function等
值:由多个值构成的对象;
访问类型:在操作对象时,实际上是对于对象的引用,而不是实际值;
var arr1=[1,2,3,4,5];
var arr2=arr1;
arr1.push(6);
arr2 //[1,2,3,4,5,6]
- ####如下代码的输出? 为什么?
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2); //false,obj1与obj2两者没有关系,操作数不指向同一对象
console.log(obj1 = obj2); // 返回obj1的对象,Object {a:1,b:2}
console.log(obj1 == obj2); // true,由于上一步,obj2赋值给obj1,意思是说obj1指向obj2的内存空间,两者变为同一对象;
- ####获取从当前时间到指定日期的间隔时间(demo)
function getIntv(date){
var d=new Date(date);
var a=new Date(date)-Date.now();
var day= Math.floor(a/1000/60/60/24);
var hour=Math.floor((a-day*1000*60*60*24)/1000/60/60);
var min=Math.floor((a-(day*24+hour)*1000*60*60)/1000/60);
var sec=Math.floor((a-(day*24*60*60*1000+hour*60*60*1000+min*60*1000))/1000);
var result= '距离双十一剩余 '+day+'天 '+hour+'小时 '+min+'分钟 '+sec+'秒';
return result;
}
getIntv('2016-11-11')
![](http://upload-images.jianshu.io/upload_images/2755981-3a1054183d97eb9d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####把数字日期改成中文日期(demo)
var str = getChsDate('2015-01-08');
function getChsDate(str){
var d=new Date(str),
arrchina=['零','一','二','三','四','五','六','七','八','九','十'],
year=d.getFullYear(),
month=d.getMonth(),
date=d.getDate(),
str="";
var arryear = year.toString().split("");
for(var i=0;i<4;i++){
str+=arrchina[arryear[i]];
}
str=str+"年";
if(month<10){
str=str+arrchina[month+1];
}else if(month>9){
str=str+arrchina[10]+arrchina[month-9];
}else if(month=10){
str=str+arrchina[10];
}
str=str+"月"
if(date<11){
str=str+arrchina[date];
}else if(date<20){
str=str+(arrchina[10]+arrchina[date-10]);
}else if(date<30){
str=str+("二十"+arrchina[date-20]);
}else if(date<32){
str=str+("三十"+arrchina[date-30]);
}
str=str+"日"
return str;
}
console.log(str);
![](http://upload-images.jianshu.io/upload_images/2755981-3b21f076c01eca3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####写一个函数获取n天前的日期
function getlastDays(number){
var d=new Date();
var a=new Date(d.getTime()-number*24*60*60*1000);
var year=a.getFullYear();
var month=a.getMonth()+1;
var date=a.getDate();
result=year+"-"+ month +"-"+ date;
return result;
}
![](http://upload-images.jianshu.io/upload_images/2755981-f796bb7b23df661c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####写一个函数用于获取执行时间,用于获取执行时间如
var Runtime = (function(){
var startime=0;
var endtime=0;
var obj = {
start: function(){
startime=Date.now();
},
end: function(){
endtime=Date.now();
},
get: function(){
var gettime=endtime-startime;
return gettime;
}
};
return obj;
}());
Runtime.start();
for(var i=0;i<10000;i++){
console.log(1);
}
Runtime.end();
console.log( Runtime.get() );
![](http://upload-images.jianshu.io/upload_images/2755981-7eab32ab4d4f44c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- ####楼梯有200级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现
function method(num){
var s = 0;
if(num == 1){
return 1;
}
else if(num == 2){
return 2;
}
else {
s= method(num-2) + method(num-1);
}
return s;
}
method(200);
由于数值较大,超出了栈的容量,所以无结果
[参考文章](http://chenqx.github.io/2014/09/29/Algorithm-Recursive-Programming/)
- ####写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项
var json1={
"name":["peter","john","may"],
"age":"16",
"school":[
{"eastschool":["es1","es2","es3"]},
{"northschool":["nors1","nors2","nors3"]}
]
}
function copyjson(json){
var copy=[];
for(var key in json){
if(typeof json[key] == "object"||"arrar"){
copy[key]=json[key];
}else{
copy[key]=copyjson(json[key]);
}
}
return copy;
}
copyjson(json1)
本文版权归属本人及饥人谷所有,转载请注明。