時間對象、引用類型

問題

1. 基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征?

  • 基本類型:( undefined、null、Boolean、Number、String )指的是,保存在棧內(nèi)存中的簡單數(shù)據(jù)段。
  • 復(fù)雜類型:( Object、Array、Function、正則......) 指的是,保存在堆內(nèi)存中的對象,變量中保存的實際上只是一個指針,這個指針指向內(nèi)存的另一個位置,由該位置保存對象。

2. 如下代碼輸出?為什么?

var obj1 = { a:1, b:2 };
var obj2 = { a:1, b:2 };
console.log(obj1 == obj2);  // 雖然 obj1 和 obj2 內(nèi)容一樣,但是地址不同,因此,不是同一個對象。
console.log(obj1 = obj2);  // 賦值操作 (賦的值是,b 的地址)
console.log(obj1 == obj2);  // 既然地址一樣,也就是同一個對象了
task19-2.png

代碼

1. 寫一個函數(shù) getInv,獲取從當(dāng)前時間到指定日期的間隔時間

    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年春節(jié)還有:" + days + "天" + hours + "小時" + minutes + "分鐘" + seconds + "秒";
        return result;
    }
task19-pic1.png

2. 把數(shù)字日期改為中文日期

    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. 寫一個函數(shù)獲取 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. 完善如下代碼,用于獲取執(zhí)行時間如:

    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級,從底走到頂一共有多少種走法?用代碼(遞歸)實現(xiàn)

    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 對象可以多層嵌套,值可以是字符串、數(shù)字、布爾、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;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 基礎(chǔ)數(shù)據(jù)類型:指的是簡單的數(shù)據(jù)段 在JavaScript中有五種...
    饑人谷區(qū)子銘閱讀 342評論 0 1
  • 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 變量的值類型 從變量存儲方式角度看,ECMAScript變量包含...
    犯迷糊的小羊閱讀 968評論 0 0
  • 問題 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 在回答該問題之間先介紹一下JavaScript的內(nèi)存機制:...
    饑人谷_任磊閱讀 387評論 0 0
  • 一、問答 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? ①基礎(chǔ)類型包括:number,boolean,stri...
    鴻鵠飛天閱讀 470評論 0 0
  • 持續(xù)做你不會做的事。。 問答 1.基礎(chǔ)類型有哪些?復(fù)雜類型有哪些?有什么特征? 基礎(chǔ)類型基礎(chǔ)類型包括:string...
    婷樓沐熙閱讀 436評論 0 0

友情鏈接更多精彩內(nèi)容