關於JavaScript 常見的面試題

關於JavaScript常見的面試題總結

 1、JavaScript基本數據類型   

  • null:空、無。表示不存在,當爲對象的屬性賦值爲null,表示刪除該屬性
  • undefined:未定義。當聲明變量卻沒有賦值時會顯示該值能夠爲變量賦值爲undefined
  • number:數值。最原始的數據類型
  • string:字符串。最抽象的數據類型
  • boolean:布爾值。最機械的數據類型
  • object:對象。面向對象的基礎

  怎麼判斷是不是某數據類型??

  typeof:javascript

alert(typeof 1);                // 返回字符串"number"  
alert(typeof "1");              // 返回字符串"string"  
alert(typeof true);             // 返回字符串"boolean"  
alert(typeof {});               // 返回字符串"object"  
alert(typeof []);               // 返回字符串"object "  
alert(typeof function(){});     // 返回字符串"function"  
alert(typeof null);             // 返回字符串"object"  
alert(typeof undefined);        // 返回字符串"undefined"

示例代碼:css

<script type="text/javascript">
             var app={};
             alert(typeof app);           
</script>

運行效果: html

 二、閉包相關問題

  問題:點擊每一個li輸出裏面的內容java

   

示例代碼:node

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>閉包</title>
    </head>
    <body>
        <ul id="parent">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
        </ul>
        
        <script>
            var ul = document.getElementById('parent');
            var li = ul.getElementsByTagName('li');              
            for(var i=0;i<li.length;i++){
                li[i].onclick=function(){
                    alert(i);
                }
            }
        </script>
    </body>
</html>

運行效果:jquery

我點擊的是3 而彈出i的是倒是7面試

緣由就在於 點擊事件的函數內部使用外部的變量i一直在變化,當咱們指定click事件時並無保存i的副本,這樣作也是爲了提升性能,但達不到咱們的目的,咱們要讓他執行的上下文保存i的副本,這種機制就是閉包。ajax

 

所以,小編總結了三種比較常見的辦法  讓點擊每一個li輸出裏面的內容數組

 No1: 閉包

運行效果:

 

達到了咱們想要的效果

理解:當一個內部函數被調用,就會造成閉包,閉包就是可以讀取其餘函數內部變量的函數,定義在一個函數內部的函,建立一個閉包環境,讓返回的這個子程序抓住i,以便在後續執行時能夠保持對這個i的引用。內部函數比外部函數有更長的生命週期;函數能夠訪問它被建立時所處的上下文環境。

 

No2:

運行效果:

 達到了咱們想要的效果

 理解:使用this的原理,由於對於this的隱式綁定來講,this指向的是調用位置上的包含對象,也就是你點擊的那個li[i]。this 誰調用它他就指向誰 經過this的指向就能夠獲得咱們想要的結果

 

No3:

運行效果:

理解:使用的是事件代理以及event事件的內置屬性來達到效果。

 

 2、JavaScript面向對象

 對象就是「鍵/值」對的集合並擁有一個鏈接到原型(prototype)對隱藏鏈接。

 2.一、對象常量(字面量)

 一個對象字面量就是包含在一對花括號中的零個或多個「鍵/值」對。對象字面量能夠出如今任何容許表達式出現的地方。

  對象的定義:  

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>面向對象</title>
        <script>
            //空對象對象
            var obj={};
            //對象的屬性
            var obj1 = {name:"foo",age:"19"};
            var obj2 = {"nick name":"dog"};
            
            //對象中的方法
            var obj4 = {
                price:99,
                inc:function(){
                    //obj4這個對象調用this  this指向obj4 obj4.price+=1 =100;
                    alert(this.price+=1);
                }
            }            
            obj4.inc();
        </script>
    </head>
    <body>    
    </body>
</html>

對象中可包含的內容:

對象常量能夠出如今任何容許表達式出現的地方,對象、數組、函數能夠相互間嵌套,形式能夠多種多樣。對象的值能夠是:數組,函數,對象,基本數據類型等。

//對象中可包含的內容
            var obj5 = [{
                name: "jack"
            }, {
                name: "lucy",  //常量
                hobby:["讀書","上網","代碼"],  //數組
                friend:{name:"mark",height:198,friend:{}},  //對象
                show:function(){  //函數
                    console.log("你們好,我是"+this.name);
                }
            }];
            //對象中的this是動態的,指向的是:調用者
            obj5[1].show();

輸出:你們好,我是lucy  

2.二、取值

方法一:直接使用點號運算

 //3取值
            var obj6={"nick name":"pig",realname:"Rose"};
            console.log(obj6.realname);
            //console.log(obj6.nick name);  錯誤

 2.三、枚舉(遍歷)

var obj7={weight:"55Kg","nick name":"pig",realname:"Rose"};
            
            for (var key in obj7) {
                console.log(key+":"+obj7[key]);
            }

 運行結果: 

 weight:55Kg
 nick name:pig
 realname:Rose

輸出的順序是不必定的

 

2.四、更新與添加

若是對象中存在屬性就修改對應值,若是不存在就添加。對象經過引用傳遞,它們永遠不會被複制

var obj8={realname:"King"};
            obj8.realname="Queen";  //修改
            obj8.weight=1000;  //添加屬性
            obj8.show=function()  //添加方法
            {
                console.log(this.realname+","+this.weight);
            }
            obj8.show();

輸出:

Queen,1000

var obj8={realname:"King"};
            obj8.realname="Queen";  //修改
            obj8.weight=1000;  //添加屬性
            obj8.show=function()  //添加方法
            {
                console.log(this.realname+","+this.weight);
            }
            obj8.show();
            
            //引用
            var obj9=obj8;   //obj9指向obj8的引用
            obj9.realname="Jack";
            obj8.show();

 

 

 2、JavaScript當中的this

在JavaScript中this表示:誰調用它,this就是誰。

JavaScript是由對象組成的,一切皆爲對象,萬物皆爲對象。this是一個動態的對象,根據調用的對象不一樣而發生變化,固然也可使用call、apply修改this指向的對象。它表明函數運行時,自動生成的一個內部對象,只能在函數內部使用

2.一、JavaScript中函數與方法的區分

在面向過程的語言中咱們習慣把完成某個特定功能的代碼塊稱爲「函數」或「過程」,固然過程通常沒有返回值。在面嚮對象語言中咱們把對象的功能稱爲「方法」。但JavaScript是種介於面向對象與面向過程當中間的語言,一樣的方法有時是函數,有時是方法,以下所示:

<script type="text/javascript">
            //1
            function show(){
                console.log("這是一個函數");
            }
            
            //2
            (function(){
                console.log("這是一個函數表達式");
            })();
            
            //3
            var obj1={
                show:function(){
                    console.log("這是一個方法");
                }
            };
            
            //4
            function obj2(){  //obj2是函數,構造函數
                this.show=function(){
                    console.log("這是一個方法,是一個表達式");
                }
            }
            var obj3=new obj2();
            
        </script>

2.二、指向全局對象

當在所有範圍內使用 this,它將會指向全局對象。通常是window對象,但全局對象不必定只有window,特別是在node.js環境中。做爲函數調用時通常指向全局對象。

<script type="text/javascript">
            var name="tom";
            console.log(this.name);      //頂層對象,通常爲window    
            
            function show()
            {
                console.log(this.name);  //頂層對象,通常爲window
                return function(){
                    console.log(this.name);  //頂層對象,通常爲window,由於返回的是函數
                }
            }
            
            var f1=show();
            f1();
            
        </script>

2.三、做爲事件時的this

示例代碼

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>this</title>        
    </head>
    <body>
        <input type="button" value="btnA" class="btn"/>
        <input type="button" value="btnB" class="btn"/>
        <input type="button" value="btnC" class="btn"/>
        <input type="button" value="btnD" onclick="handler()"/>
        <input type="button" value="btnE" id="btnE"/> 
    <script>
        var btns= document.getElementsByClassName("btn");
        for (var i=0;i<btns.length;i++) {
            btns[i].onclick=handler;
        }
        
        function handler(){
            alert(this.value);
        }
         //handler中的this指向btnE
        document.getElementById("btnE").addEventListener("click",handler,false);
    </script>
    
    
    </body>
</html>

 

運行結果:

點擊按鈕A

 

點擊按鈕D

沒有取到this的值  此時的this指向了window對象

 

 示例代碼

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>this</title>
    </head>

    <body>
        <input type="button" value="按鈕F的值" id="btnF" />
        <input type="button" value="按鈕G的值" id="btnG" onclick="app.show()"/>
        <script type="text/javascript">
            value="window的值"
            var app = {
                value: "app的值",
                show: function() {
                    alert(this.value); //若是show爲事件,則this指向觸發事件的對象
                },
                init: function() {
                    //handler中的this指向btnE
                    document.getElementById("btnF").addEventListener("click", this.show, false);
                }
            };
            
            app.show();   //"app的值",show方法中的this指向app這個對象
            app.init();     //init中的this指向誰app對象
            
            
        </script>
    </body>
</html>

 運行加載時的結果:

 

點擊按鈕F時

點擊按鈕G時:

 

 在HTML元素上直接指定事件嚴格來講都不能說是事件綁定,只能描述是當按鈕點擊完成後執行的函數。若是想將執行時的對象帶回,能夠增長參數this。

 

3、JavaScript數組

 3.1數組的定義

       var array01 = new Array(); //空數組
            //alert(typeof array01); object
            
            var array02 = new Array(5);
            alert(array02.length); 5
            
            var array03 = new Array("a","b" ,1,2,3,true,false);
            
            var array04 = [] //空數組
            
            var array05 = [2,3,4,"x","y"];

 

運行效果:彈出array02的長度

3.2訪問數組:

        //訪問數組  No1
             console.log(array03[6]);

 運行效果:

//訪問數組  No2
             for (var i = 0; i<array05.length;i++) {
                 console.log("第"+(i+1)+"個值:   "+array05[i]);
             } 

 運行效果:

 

//訪問數組  No3  枚舉
             for(var i in array03){
                 console.log("下標爲"+i+"的值爲:   "+array03[i]);//此處是i的下標
             }

運行效果:

3.三、添加元素

將一個或多個新元素添加到數組未尾,並返回數組新長度

arrayObj. push([item1 [item2 [. . . [itemN ]]]]);

將一個或多個新元素添加到數組開始,數組中的元素自動後移,返回數組新長度

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);

將一個或多個新元素插入到數組的指定位置,插入位置的元素自動後移,返回被刪除元素數組,deleteCount要刪除的元素個數

arrayObj.splice(insertPos,deleteCount,[item1[, item2[, . . . [,itemN]]]])

示例代碼:

//添加元素
            array03.push(5,8);    //添加到末尾
            array03.unshift("we"); //添加到末尾            
             for(var i in array03){
                 console.log("下標爲"+i+"的值爲:   "+array03[i]);//此處是i的下標
             }

 運行效果:

//添加到中間
            array05.splice(3,0,"w","e"); //從第三位開始插入 刪除第三位後面 0 個元素 默認會刪除3後面一個元素的
            for (var i=0;i<array03.length;i++) {
                console.log(array05[i]);
            }

 運行結果:

3.四、刪除

移除最後一個元素並返回該元素值

arrayObj.pop();

移除最前一個元素並返回該元素值,數組中元素自動前移

arrayObj.shift(); 

刪除從指定位置deletePos開始的指定數量deleteCount的元素,數組形式返回所移除的元素

arrayObj.splice(deletePos,deleteCount); 

示例:

//刪除最後一個元素
            array03.pop();
            for (var i in array03) {
                console.log(array03[i]);
            }

 運行效果:

//刪除首個一個元素
            array03.shift();
            for (var i in array03) {
                console.log(array03[i]);
            }

 

 運行效果:

//刪除指定位置與個數
            array05.splice(1,2);//從下標第二的開始刪 刪2個
            for (var i=0 ;i<array05.length; i++) {
                console.log(array05[i]);
            }

 

 運行效果:

3.五、截取和合並

以數組的形式返回數組的一部分,注意不包括 end 對應的元素,若是省略 end 將複製 start 以後的全部元素

arrayObj.slice(start, [end]); 

將多個數組(也能夠是字符串,或者是數組和字符串的混合)鏈接爲一個數組,返回鏈接好的新的數組

arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); 

示例: 

//4.五、截取和合並
            var array51=[1,2,3,4,5,6];
            var array52=[7,8,9,0,"a","b","c"];
            //截取,切片
            var array53=array51.slice(2);  //從第3個元素開始截取到最後
            console.log("被截取:"+array53+"——"+array51);
            var array54=array51.slice(1,4);  //從第3個元素開始截取到索引號爲3的元素
            console.log("被截取:"+array54+"——"+array51);
            //合併
            var array55=array51.concat(array52,["d","e"],"f","g");
            console.log("合併後:"+array55);

 運行效果:

3.六、拷貝

返回數組的拷貝數組,注意是一個新的數組,不是指向

arrayObj.slice(0); 

返回數組的拷貝數組,注意是一個新的數組,不是指向

arrayObj.concat(); 

由於數組是引用數據類型,直接賦值並無達到真正實現拷貝,地址引用,咱們須要的是深拷貝。

3.七、排序

反轉元素(最前的排到最後、最後的排到最前),返回數組地址

arrayObj.reverse(); 

對數組元素排序,返回數組地址

arrayObj.sort(); 

arrayObj.sort(function(obj1,obj2){}); 

示例:

var array71=[4,5,6,1,2,3];
            array71.sort();
            console.log("排序後:"+array71);
            var array72=[{name:"tom",age:19},{name:"jack",age:20},{name:"lucy",age:18}];
            array72.sort(function(user1,user2){
                return user1.age<user2.age;
            });
            console.log("排序後:");
            for(var i in array72) console.log(array72[i].name+","+array72[i].age);

 

 運行效果:

3.八、合併成字符

返回字符串,這個字符串將數組的每個元素值鏈接在一塊兒,中間用 separator 隔開。

arrayObj.join(separator); 

//4.八、合併成字符與將字符拆分紅數組
            var array81=[1,3,5,7,9];
            var ids=array81.join(",");
            console.log(ids);
            
            //拆分紅數組
            var text="hello nodejs and angular";
            var array82=text.split(" ");
            console.log(array82);

 運行效果:

 

 

3.9數組的排序

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            /*
             *(1)在數據集之中,選擇一個元素做爲"基準"(pivot)。
             *(2)全部小於"基準"的元素,都放置於"基準"的"小值區域"(左邊);全部大於"基準"的元素,都被置於"基準"的"大值區域"(右邊)。
             *(3)對以"基準"爲分割線的兩個子集,不斷重複第一步和第二步,直到全部子集只剩下一個元素爲止。
             */
            //定義一個數組
            var arr = [85, 24, 63, 45, 17, 31, 96, 50];
            //定義一個存放結果的result
            var result = "";
            var quickSort = function(arr) { 
                if(arr.length <= 1) {
                    return arr;
                }
                //選取被排序數組中的任一元素做爲"基準"(這裏咱們就選取數組中間的元素)
                var pivotIndex = Math.floor(arr.length / 2);  
                var pivot = arr.splice(pivotIndex, 1);  
                //聲明兩個數組分別用來放置"小值"和"大值"
                var left = [];  
                var right = []; 
                //而後,開始遍歷數組,小於"基準"的元素放入左邊的子集,大於基準的元素放入右邊的子集。
                for(var i = 0; i < arr.length; i++) {    
                    if(arr[i] < pivot) {      
                        left.push(arr[i]);    
                    } else {      
                        right.push(arr[i]);    
                    }  
                }  
                return result = quickSort(left).concat(pivot, quickSort(right));
            };
            //執行方法
            quickSort(arr);
            //輸出結果
            console.log(result.join(" < "));
        </script>
    </head>
    <body> 
    </body>
</html>

運行效果:

 3.10數組的去重:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>數組去重</title>
        <script type="text/javascript">
            var array11 = [2, 3, 4, 2, 3];
            var newArr = []; //新建一個數組
            function unique1(arr) {
                for(var i = 0, len = arr.length; i < len; i++) {
                    if(newArr.indexOf(arr[i]) == -1) { //若新數組中未包含該項則將其存入新數組
                        newArr.push(arr[i]);
                    }
                }
                return newArr;
            }
            unique1(array11);            
            alert(newArr.length)//3
            for(var i in newArr){
                console.log(newArr[i]);
            }
        </script>
    </head>
    <body>
    </body>
</html>

 運行效果:

 

4.在未知多少個數字輸入框的狀況下,計算這些輸入框中數字的總和:

 代碼:

        $('input').keyup(function() {
            console.log($(this).val());
            var num = 0;
            $('input').each(function(index, item){
                num += Number($(item).val());
            });
            $("#business").text(num);
        });    

效果:

 附:

判斷輸入的是不是數字:

$.isNumber($(this).val());

判斷輸入的是不是大於0的數字:

$(this).val()<0;

 

4.1在一個table中,有未知多少個tr,我要選擇最後三個用jQurey怎樣實現:

 代碼:

$('tr td').slice(-3).css("color", "red");

 效果:

 

5.1兩個小案例

<ul class="ul">
        <li ><a href="#">第一條</a></li>
        <li ><a href="#">第二條</a></li>
        <li ><a href="#">第三條</a></li>
        <li ><a href="#">第四條</a></li>
        <li ><a href="#">第五條</a></li>
        <li ><a href="#">第六條</a></li>
        <li ><a href="#">第七條</a></li>
    </ul> 
    
    <span class="span">12.234567</span>
    <span class="span">43.7675</span>
    <span class="span">54.456765</span>
    <span class="span">23.76543</span>
    <span class="span">232.765</span>
    <span class="span">9876.4542345</span>
    
    <script type="text/javascript">
            var arr = [1,5,3,6];
            for(var i=0;i<arr.length;i++){
                $(".ul li a:eq('"+arr[i]+"')").css("color","red");
                console.log(arr[i]);
            }
            
            var span=0;
            for(var i=0;i<$(".span").length;i++){
                span = Number($(".span:eq('"+i+"')").text());
                span = parseFloat(span.toFixed(2));
                $(".span:eq('"+i+"')").html(span);
            }
    </script>

 

 運行效果:

 六、jQuery 驗證from表單提交文件類型

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>無標題文檔</title>
    <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
    <form action="002.html" method="post"> 
        <input type="file" name="myFile" id="myFile"/> <br />
        <input type="file" name="myImg" id="myImg" /> <br />
        <input type="submit" id="sub" value="提交"/><br />
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#sub").on('click',function(){
                 function check(){
                var filepathExl = $("input[name='myFile']").val();
                var extStartExl = filepathExl.lastIndexOf(".");
                var ext1 = filepathExl.substring(extStartExl, filepathExl.length).toUpperCase();
                var filepathImg = $("input[name='myImg']").val();
                var extStart = filepathImg.lastIndexOf(".");
                var ext = filepathImg.substring(extStart, filepathImg.length).toUpperCase(); 
                   if (ext1 != ".XLS" && ext1 != ".XLSX") {
                    alert("文件限於Excel格式");
                    return false; 
                } 
                   if (ext != ".BMP" && ext != ".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG") {
                    alert("圖片限於bmp,png,gif,jpeg,jpg格式");
                    return false; 
                }
            }
            return check();
            });
        });
    </script>
</body>
</html>

 

 七、圖片顯示並修改

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
        <style> 
            .topleftbox {
                width: 200px;
                height: 130px;
                border: 1px solid #262626;
                padding: 3px;
                border-radius:4px;
                margin-left: 10px;
                margin-top: 10px;
                float: left;
            }
            
            .topleftbox #addimga {
                display: block;
                width: 100%;
                height: 100%;
                background-size:100% 100%;
                background-position: center center;
                background-repeat: no-repeat;
            }
            
            .topleftbox #addimga input {
                width: 100%;
                height: 100%;
                opacity: 0;
            }
            #sub{margin: 120px 10px;}
        </style>
    </head>

    <body>
        <form method="get" action="001.html" enctype="multipart/form-data">
            <div class="topleftbox">
                <a class="addimga" id="addimga" href="javascript:;">
                    <input type="file" name="file" onchange="showImg(this)"/>
                </a>
            </div>
            <input type="submit" name="" id="sub" value="提交" />
        </form>
        <script>
            //經常顯示的是一張原圖
            $("#addimga").css("background-image","url(img/10.jpg)");
            //顯示上傳的圖片
            function showImg(obj) { 
                var srcs = window.URL.createObjectURL(obj.files[0]);
                var addimga = document.getElementById("addimga");
                if(srcs){
                    //把上傳後的圖片路徑給a連接背景圖片的路徑
                    addimga.style.background = "url(" + srcs + ") center no-repeat";
                    $("#addimga").css("background-size", "100% 100%");
                }
            }
        </script>
    </body>

</html>

 

運行效果:

選擇一張圖片後

點擊提交以後,圖片信息已經發送過去

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
        <style> 
            .topleftbox {
                width: 200px;
                height: 130px;
                border: 1px solid #262626;
                padding: 3px;
                border-radius:4px;
                margin-left: 10px;
                margin-top: 10px;
                float: left;
            }
            
            .topleftbox #addimga {
                display: block;
                width: 100%;
                height: 100%;
                background-size:100% 100%;
                background-position: center center;
                background-repeat: no-repeat;
            }
            
            .topleftbox #addimga input {
                width: 100%;
                height: 100%;
                opacity: 0;
            }
            #sub{margin: 120px 10px;}
        </style>
    </head>

    <body> 
            <div class="topleftbox">
                <a class="addimga" id="addimga" href="javascript:;">
                    <input type="file" name="file" id="file" onchange="showImg(this)"/>
                </a>
            </div>
            <input type="submit" name="" id="sub" value="提交" />
        <script>
            //經常顯示的是一張本來的圖
            $("#addimga").css("background-image","url(img/10.jpg)");
            //顯示上傳的圖片
            function showImg(obj) { 
                var srcs = window.URL.createObjectURL(obj.files[0]);
                var addimga = document.getElementById("addimga");
                if(srcs){
                    //把上傳後的圖片路徑給a連接背景圖片的路徑
                    addimga.style.background = "url(" + srcs + ") center no-repeat";
                    $("#addimga").css("background-size", "100% 100%");
                }
            }
            $("#sub").on('click',function(){
                var imgFile = $("#file").val();
                $.ajax({
                    url:'001.html',
                    data:imgFile,
                    type:'get',
                    dataType:'JSON',
                    success:function(res){
                        console.log(res);
                    },
                    error:function(re){
                        console.log("er")
                    }
                })
            })
        </script>
    </body>

</html>
View Code

 

 如何讓銀行卡卡號每四位出現空格隔開

return val.replace(/\s/g,'').replace(/(\d{4})(?=\d)/g,"$1 ");

 

 JS 計算時間差

        function getTimeSpace(startTime,endTime){
            console.log(startTime,endTime)
            var spaceTine = new Date(endTime).getTime()-new Date(startTime).getTime();   //時間差的毫秒數     
            if (spaceTine<0) {
                alert('結束時間必須大於開始時間');
                return ;
            }

            //計算出相差天數
            var days=Math.floor(spaceTine/(24*3600*1000))
     
            //計算出小時數

            var leave1=spaceTine%(24*3600*1000)    //計算天數後剩餘的毫秒數
            var hours=Math.floor(leave1/(3600*1000))
            //計算相差分鐘數
            var leave2=leave1%(3600*1000)        //計算小時數後剩餘的毫秒數
            var minutes=Math.floor(leave2/(60*1000))
            //計算相差秒數
            var leave3=leave2%(60*1000)      //計算分鐘數後剩餘的毫秒數
            var seconds=Math.round(leave3/1000)

            if (days>0) {
                if (hours==0) {
                    return " 相差 "+days+"天 "+minutes+"分鐘 ";
                }else{
                    return " 相差 "+days+"天 "+hours+"小時 ";
                }
            }else if(hours>0){
                if (minutes==0) {
                    return  hours+"小時 "+seconds+" 秒";
                }else{
                    return  hours+"小時 "+minutes+" 分鐘";
                }
            }else if(minutes>0){
                return  minutes+" 分鐘"+seconds+" 秒";
            }else{
                return  seconds+" 秒";
            }
        }
        console.log(getTimeSpace(new Date().getTime(),'2019-06-29 23:00:00'));
相關文章
相關標籤/搜索