我以为[]之间的所有值都转换为字符串,为什么不undefined
转换为"undefined"
?
var a={};
a[undefined];
Object.keys(a).length===0
您假设所有之间[]
的值都转换为字符串不正确。
话虽这么说,但是如果您确实为密钥分配了任何内容,那么您正在做的事情就会奏效,但事实undefined
并非如此。
var a = {};
a[undefined] = 1;
Object.keys(a).length === 1;
甚至
var a = {};
a[undefined] = undefined;
Object.keys(a).length === 1;
如果您没有为哈希中的键分配值,则不会保留该键。
编辑
这种语言的工作方式很有趣。当您声明没有值的变量时,JS会使用值将其初始化undefined
var x;
console.log(x); //undefined
但是,当您尝试在对象上声明键而不将其分配给值时,则不会使用值初始化它undefined
;
var x = {};
x[1];
Object.keys(x).length === 0;
另外,仅出于娱乐目的,从上面可以很容易看出以下事实:
var x; //initializes to undefined
var y = {};
y[undefined] = x;
Object.keys(y).length === 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句