这是我到目前为止所尝试的。
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()期望删除变量中的引用值。不幸的是,它只是保持不变。有人能给我一个如何实现这种情况的线索吗?
任何帮助都将不胜感激。
答案 0 :(得分:11)
你无法取消声明变量。您可以将其值设置为undefined
,但是:
nxt = undefined;
您可以从对象中删除属性,通常取决于它添加到对象的方式。如果此代码位于全局范围内,则nxt
变量也是全局对象的属性(您可以通过浏览器上的window
引用),但无法删除以此方式添加的属性。因此,可以以不同的方式添加它,而不是声明它:
window.nxt = 'I am next';
然后您可以使用delete
完全删除它:
delete window.nxt;
(请注意delete
不是函数,它是一个运算符;您不使用()
,尽管这样做是无害的。)
然而,全局变量是Bad Thing™,所以我建议将所有这些包装在一个范围函数中,保持nxt
变量,并设置nxt
到undefined
。
答案 1 :(得分:3)
您可以将变量显式设置为undefined:
nxt = undefined;