时间对象、引用类型

问题

一、基础类型有哪些?复杂类型有哪些?有什么特征?
  • 基础类型(数值、布尔值、null和underfined):指的是保存在栈内存中的简单数据段。
  • 引用类型(对象、数组、函数、正则):指的是保存在堆中的对象,变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,由该位置保存对象
    堆栈
二、如下代码的输出? 为什么?
时间对象、引用类型_第1张图片
Paste_Image.png

代码

一、写一个函数getIntv,获取从当前时间到指定日期的间隔时间
function getIntv(str){
    var t = Date.parse(str) -  Date.now();
    var d=Math.floor(t/1000/60/60/24);
    var h=Math.floor(t/1000/60/60%24);
    var m=Math.floor(t/1000/60%60);
    var s=Math.floor(t/1000%60);
    var str="距离除夕还有"+d+"天"+h+"小时"+m+"分钟"+s+"秒";
    console.log(str);
}
var str = getIntv("2017-1-27");
console.log(str);
二、把数字日期改成中文日期
var str = getChsDate('2015-01-08');
console.log(str);  // 二零一五年一月八日
function getChsDate(time){
    var a = ['零','一','二','三','四','五','六','七','八','九','十',
        '十一','十二','十三','十四','十五', '十六','十七','十八','十九',
        '二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一'];
    var t = new Date(time);
    var n = '';
    var year = t.getFullYear() +''; //使数字变成字符串
    var month = t.getMonth() + 1;
    var date = t.getDate();
    for(var i = 0; i < year.length; ++i){
        n += a[year[i]];
    }
    console.log(n + '年' + a[month] + '月'  + a[date] + '日');
}
三、写一个函数获取n天前的日期
function getLastNDays(val){
    var date = new Date( Date.now() - val * 24 * 60 * 60 *1000 );
    return date;
}
四、完善如下代码,用于获取执行时间如:
var Runtime = (function(){
    var starttime,endtime, intervaltime;
    var obj = {
        start: function(){
           starttime=Date.now();
            return  starttime;
        },
        end: function(){
             endtime=Date.now();
            return  endtime;
        },
        get: function(){
           intervaltime=(endtime-starttime)/1000;
            console.log(intervaltime);
        }
    };
    return obj;
}());

Runtime.start();
for(var i=0;i<1000;i++){
    console.log(111);
}
Runtime.end();
console.log(  Runtime.get() );
五、楼梯有20级,每次走1级或是2级,从底走到顶一共有多少种走法?用代码(递归)实现
function  fn(n){
    if(n ==1){return 1;}
    if(n ==2){return 2;}
    return  fn(n-1)+fn(n-2);
}
fn(20);
六、写一个json对象深拷贝的方法,json对象可以多层嵌套,值可以是字符串、数字、布尔、json对象中的任意项(PS:尝试另外一种方法 var obj2 = JSON.parse( JSON.stringify(obj1) )
var me = {
    "name": "zxy",
    "age": 22,
    "hobby": {
        "game": "lol";
           }
}
function dcopy(obj1){
    var obj2 = {};
    for(var key in obj1){
        if(typeof obj1[key] == 'object'){
            obj2[key] = dcopy(obj1[key])
        }else{
            obj2[key] = obj1[key]
        }
    };
    return obj2;
}

//方法二
 /*JSON.parse()方法将一个 JSON字符串解析成一个javascript值。
JSON.stringify()方法可以将任意的 JavaScript 值序列化成 JSON 字符串
  */

function dc(obj1){
    var obj2 = JSON.parse(JSON.stringify(obj1));
    return obj2;
}

你可能感兴趣的:(时间对象、引用类型)