鉴于:
console.log(boo); this outputs undefined
Run Code Online (Sandbox Code Playgroud)
鉴于:
var boo = 1;
console.log(boo); this outputs 1
Run Code Online (Sandbox Code Playgroud)
在定义boo并设置为1后,如何重置boo,以便console.log输出undefined?
谢谢
Goo*_*rry 46
为了可靠地设置一个变量boo来undefined,使用函数用空return表达:
boo = (function () { return; })();
Run Code Online (Sandbox Code Playgroud)
执行这行代码后,typeof(boo)计算结果为'undefined',无论与否的undefined全球属性被设置为其他值.例如:
undefined = 'hello';
var boo = 1;
console.log(boo); // outputs '1'
boo = (function () { return; })();
console.log(boo); // outputs 'undefined'
console.log(undefined); // outputs 'hello'
Run Code Online (Sandbox Code Playgroud)
编辑但也请参阅@Colin的简单解决方案!
这种行为是ECMAScript 1的标准.相关规范部分说明:
句法
return[ 此处没有LineTerminator ] 表达 ;语义
一个
return语句导致函数停止执行,并返回一个值给调用者.如果省略Expression,则返回值为undefined.
要查看原始规格,请参阅:
为了完整起见,我根据其他响应者给出的答案和评论,附上了对此问题的替代方法的简要总结,以及对这些方法的反对意见.
undefined给booboo = undefined; // not recommended
Run Code Online (Sandbox Code Playgroud)
虽然这是更简单的分配undefined给boo直接,undefined不是保留字和可以被取代由一个任意值,诸如数字或字符串.
boodelete boo; // not recommended
Run Code Online (Sandbox Code Playgroud)
删除boo删除的定义boo完全,而不是分配给它的价值undefined,而且当时只适用,如果boo是一个全球性的属性.
小智 30
使用void运营商.它将评估它的表达式然后返回undefined.void 0用于分配变量是惯用的undefined
var boo = 1; // boo is 1
boo = void 0; // boo is now undefined
Run Code Online (Sandbox Code Playgroud)
在此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
Bry*_*yle 14
您可以简单地为变量赋值undefined:
boo = undefined;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用delete运算符删除变量:
delete boo;
Run Code Online (Sandbox Code Playgroud)
nee*_*ebz 10
delete boo
不要用var boo = undefined.undefined只是一个变量,如果有人设置,undefined = "hello"那么你到处都会得到你好:)
编辑:
null与undefined不同.删除那一点.