关于JS时间对象和递归问题

js时间对象和递归在学习中经常会遇到,本篇将对其进行讲解。

基础类型有哪些?复杂类型有哪些?有什么特征?
一般来说JS的基础类型主要分为5种,指的是保存在栈内存中的简单数据段;

数字:number

布尔值:true、false

字符串:string

null: 控制针

underfined:有指针却未赋值

复杂类型只有object:包括 数组、对象、函数、正则,指的是保存在堆内存中的对象,变量中保存的实际上只是一个指针(坐标),这个指针执行的是内存中的另一个位置,由该位置保存对象。

如下代码的输出? 为什么?

var obj1 = {a:1, b:2};var obj2 = {a:1, b:2};console.log(obj1 == obj2);    //判断obj1是否等于obj2console.log(obj1 = obj2);      //将obj2赋值给obj1console.log(obj1 == obj2);    //再次判断obj1是否等于obj2因为复杂类型的特性,两个对象分别是不同的位置,所以结果为:falseObject {a: 1, b: 2}true

代码

写一个函数getIntv,获取从当前时间到指定日期的间隔时间

function getIntv(haha){  a= Date.now();  b= Date.parse(haha);  c= b-a;  d= Math.floor(c/(1000*60*60*24));  e= Math.floor((c-d*1000*60*60*24)/(1000*60*60));  f= Math.floor((c-d*1000*60*60*24-e*1000*60*60)/(1000*60));  g= Math.floor((c-d*1000*60*60*24-e*1000*60*60-f*1000*60)/1000);  return ("距除夕还有"+d+"天"+e+"小时"+f+"分钟"+g+"秒")}var str = getIntv("2017-01-27");console.log(str);

登录后复制

把数字日期改成中文日期

function getChsDate(lala){  num=['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']  var damo = lala.split('-')       var b = damo[0].split('')     for( var e =0 ;e

写一个函数获取n天前的日期

function getLastNDays(lala) {  var damo = new Date().getTime()-(lala*1000*60*60*24);  var d2 = new Date(damo)  var ad =(d2.getMonth()+1)  console.log(d2.getFullYear()+'-'+ad+'-'+d2.getDate())   } getLastNDays(40);

登录后复制

完善如下代码,用于获取执行时间如:

var Runtime = (function(){    var a,b,c;    return {        start: function(){             a = Date.now();   //获取现在的时间             console.log(a);        },        end: function(){             b = Date.now();    //获取执行后的时间             console.log(b);        },        get: function(){              c = b - a;              //两者相减得出执行代码的时间。                         return (c+"毫秒");        //单位为毫秒        }    };}());Runtime.start();             for(var i = 0; i

楼梯有200级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现

function fn(sum){  if(sum===1){    return 1;  }  if(sum===2){    return 2;  }  return fn(sum-1)+fn(sum-2)

登录后复制

}//楼梯的走法相当于(走一步之后+后面的走法)+(走两步之后+后面的走法)//走一步或者走两步是条件console.log(fn(200));                 //数值太大,会卡死

写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项

var obj={  sex:18,  vala:"hello",  arr:{    name:"damo"  }};function objcopy(obj){  var newobj={};  for(var i in obj){    //遍历对象obj    if(typeof obj[i]=== "object"){       //如果对象的值为对象      newobj[i] = objcopy(obj[i])    //将对象赋值为新对象    }else{      newobj[i]=obj[i];    }  }  return newobj;}var newobj= objcopy(obj);console.log(newobj)                 //一个新的对象与原对象无关系

登录后复制

写一个数组深拷贝的方法,数组里的值可以是字符串、数字、布尔、数组中的任意项目

var arr=[18, "hello", [2,3,5,6,9],true,];function objcopy(arr){  var newarr=[];  for(var i in arr){    //遍历数组arr    if( arr[i] instanceof Array){    //条件:如果对象的值为数组      newarr[i] = objcopy(arr[i])    //将数组内容赋值为新数组    }else{      newarr[i]=arr[i];    }  }  return newarr;}var newarr= objcopy(arr);console.log(newarr)                 //一个新的数组与原数组无关系

登录后复制

写一个深拷贝的方法,拷贝对象以及内部嵌套的值可以是字符串、数字、布尔、数组、json对象中的任意项

function   arrcopy(num){   var lala;  if(num instanceof Array){    lala = [];  } else{    lala={};  }

登录后复制

 for(var key in num){    if(num[key] instanceof Array){       lala[key] = arrcopy(num[key]);    }    else{       lala[key] = num[key];    }  }  return lala;}var lala= arrcopy(arr);

登录后复制

本篇对其进行

相关推荐:

dom对象的innerText和innerHTML有什么区别?

一些关于JS的基础问题

如何用前端js模块化编写require.js

以上就是关于JS时间对象和递归问题的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2760542.html

(0)
上一篇 2025年3月8日 09:19:47
下一篇 2025年3月8日 09:19:53

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论