鍍金池/ 問答/HTML/ 關于javascript中delete的問題

關于javascript中delete的問題

菜鳥求輕拍。

function myFunction() {
    var add = (function() {
        var counter = 0;
        return function () { return counter += 1;}
    })();

    add();
    add();
    delete add;

    /*
    add = (function() {
        var counter = 0;
        return function () { return counter += 1;}
    })();
    */
    add();

    document.getElementById("demo").innerHTML = add();
}

為什么以上代碼執(zhí)行后,明明執(zhí)行了delete,demo仍然顯示為4?

而以下代碼執(zhí)行后,demo顯示為2?

function myFunction() {
    var add = (function() {
        var counter = 0;
        return function () { return counter += 1;}
    })();

    add();
    add();
    delete add;

    add = (function() {
        var counter = 0;
        return function () { return counter += 1;}
    })();
    
    add();

    document.getElementById("demo").innerHTML = add();
}
回答
編輯回答
浪蕩不羈

delete只能delete字段吧,比如delete a.b

2018年8月28日 03:30
編輯回答
祉小皓

delete是刪除對象的屬性,你想把function刪除可以把它賦值空
add="";
第一個,執(zhí)行了4次add()所以為4,
第二個,你重新把add賦值,counter變成0了,又執(zhí)行兩次add(),所以為2。

2017年1月26日 08:00
編輯回答
挽歌

var聲明的變量的不能被delete delete只能刪除對象的屬性或者數(shù)組的元素
你的第二段代碼并不能說明你delete成功,只是你對add進行了重新賦值,又調用了兩遍,所以是2

2017年11月26日 14:31
編輯回答
神曲

第一個:delete只能刪除對象屬性,不能刪除通過var顯示聲明的變量。所以第一個,add方法并沒有刪除;
第二個:如樓上,重新賦值而已。

2017年11月11日 12:38