如何使用javascript取消设置变量?

时间:2016-09-29 09:06:33

标签: javascript

这是我到目前为止所尝试的。

var nxt = 'I am next';

window.onscroll = function(){
    var scr = this.pageYOffset;

    if(scr > 400){
        console.log(nxt);
        delete(nxt); // unset here
        console.log(nxt); // expected undefined or null
    }
}

我使用delete()期望删除变量中的引用值。不幸的是,它只是保持不变。有人能给我一个如何实现这种情况的线索吗?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:11)

你无法取消声明变量。您可以将其值设置为undefined,但是:

nxt = undefined;

可以从对象中删除属性,通常取决于它添加到对象的方式。如果此代码位于全局范围内,则nxt变量也是全局对象的属性(您可以通过浏览器上的window引用),但无法删除以此方式添加的属性。因此,可以以不同的方式添加它,而不是声明它:

window.nxt = 'I am next';

然后您可以使用delete完全删除它:

delete window.nxt;

(请注意delete不是函数,它是一个运算符;您不使用(),尽管这样做是无害的。)

然而,全局变量是Bad Thing™,所以我建议将所有这些包装在一个范围函数中,保持nxt变量,并设置nxtundefined

答案 1 :(得分:3)

您可以将变量显式设置为undefined:

nxt = undefined;