时间对象、引用类型

问题

1. 基础类型有哪些?复杂类型有哪些?有什么特征?

  • 基本类型:( undefined、null、Boolean、Number、String )指的是,保存在栈内存中的简单数据段。
  • 复杂类型:( Object、Array、Function、正则......) 指的是,保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针指向内存的另一个位置,由该位置保存对象。

2. 如下代码输出?为什么?

var obj1 = { a:1, b:2 };
var obj2 = { a:1, b:2 };
console.log(obj1 == obj2);  // 虽然 obj1 和 obj2 内容一样,但是地址不同,因此,不是同一个对象。
console.log(obj1 = obj2);  // 赋值操作 (赋的值是,b 的地址)
console.log(obj1 == obj2);  // 既然地址一样,也就是同一个对象了
task19-2.png

代码

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

    var str = getIntv("2017-01-28");
    console.log(str);
    function getIntv(specifiedTime){
        var perDay = 24 * 60 * 60 * 1000,
            perHour = 60 * 60 * 1000,
            perMinute = 60 * 1000;

        var intervalsTime = Date.parse(specifiedTime) - Date.now();
        
        var days = Math.floor(intervalsTime / perDay);
        var hours = Math.floor((intervalsTime - days * perDay) / perHour);
        var minutes = Math.floor((intervalsTime - days * perDay - hours * perHour) / perMinute);
        var seconds = Math.floor((intervalsTime - days * perDay - hours * perHour - minutes * perMinute) / 1000);

        var result = "距离2017年春节还有:" + days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒";
        return result;
    }
task19-pic1.png

2. 把数字日期改为中文日期

    var dateExample = convertDate('2015-01-08');
    console.log(dateExample);  // 二零一五年一月八日
    function convertDate(dateString) {
        var dateDictionary = {
            "0": "零",
            "1": "一",
            "2": "二",
            "3": "三",
            "4": "四",
            "5": "五",
            "6": "六",
            "7": "七",
            "8": "八",
            "9": "九",
            "10": "十",
            "11": "十一",
            "12": "十二",
            "13": "十三",
            "14": "十四",
            "15": "十五",
            "16": "十六",
            "17": "十七",
            "18": "十八",
            "19": "十九",
            "20": "二十",
            "21": "二十一",
            "22": "二十二",
            "23": "二十三",
            "24": "二十四",
            "25": "二十五",
            "26": "二十六",
            "27": "二十七",
            "28": "二十八",
            "29": "二十九",
            "30": "三十",
            "31": "三十一"
        }
        var dateArray = dateString.split('-'),
            year = dateArray[0],
            month = dateArray[1],
            day = dateArray[2];
        
        var yearConverted = dateDictionary[year[0]] + dateDictionary[year[1]] + dateDictionary[year[2]] + dateDictionary[year[3]] + "年",
            monthConverted = dateDictionary[Number(month)] + "月",
            dayConverted = dateDictionary[Number(day)] + "日";
        
        return (yearConverted + monthConverted + dayConverted);
    }
task19-pic2.png

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

    var lastWeek = getLastNDays(7);
    var lastMonth = getLastNDays(30);
    function getLastNDays(Days) {
        var intervalTimes = Days * 24 * 3600 * 1000,
            currentTime = Date.now(),
            fewDaysAgoTime = currentTime - intervalTimes;
        
        var tempTime = new Date(fewDaysAgoTime),
            fewDaysAgoString = tempTime.toLocaleDateString();  // XXXX/XX/XX
        
        var tempTimeArray = fewDaysAgoString.split("/"),
            result = tempTimeArray.join("-");
        
       return result; 
    }
task19-pic3.png

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

    var Runtime = (function(){
        var obj = {
            start: function(){
                startTime = Date.now();
                return startTime;
            },
            end: function(){
                endTime = Date.now();
                return endTime;
            },
            get: function(){
                var intervalTime = (endTime - startTime) / 1000;
                return (intervalTime + "秒");
            }
        };
        return obj;
    }());

    Runtime.start();
    // todo something
    for(var i = 0; i < 1000; i++){
        console.log("testing");
    }
    Runtime.end();
    console.log( Runtime.get() );
task19-pic4.png

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

    function resolveStairs(steps){
        if(steps == 1){
            return 1;
        }else if(steps == 2){
            return 2;
        }else{
            return resolveStairs(steps - 1) + resolveStairs(steps - 2);
        }
    }
    console.log(resolveStairs(20));
楼梯-递归.png

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

    function deepCopy(obj){
        var tempObj = {};
        for(var key in obj){
            if(typeof(obj[key]) === 'object'){
                tempObj[key] = deepCopy(obj[key]);
            }else{
                tempObj[key] = obj[key];
            }
        }
        return tempObj;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容