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< damo.length; e++) { for(var i = 0 ;i< b.length ; i++) { for(var f = 0 ;f< num.length ;f++) { if( damo[e] == f.toString() ) { damo[e] = num[f] } if( b[i] == f.toString() ) { b[i] = num[f] } } } } return ( b.join("")+"年"+damo[1]+"月"+damo[2]+"日" ) }var str = getChsDate("2015-11-31")console.log(str)
写一个函数获取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<60000 ;i++ ){ //这里计算i循环60000次所需要的时间} Runtime.end();console.log(Runtime.get());
楼梯有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时间对象和递归问题的详细内容。更多信息请关注PHP中文网其他相关文章!

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具