如果我试图声明一个变量并且我需要提供一个默认情况,因为它不会让我创建没有值的键,我想我可以为所有空变量创建相同的基本值,但它仍然当我实际为它赋值时,它是我希望它的类型。
var x = "";
var y = 0;
var z = null;
我知道JS非常了解哪种类型(除了字符串和数字之间的那些疯狂情况),但null
能够被所有类型覆盖,然后该变量将是那种?
所以如果我们有var x = "";
那么x已经是一个字符串了。显然,如果我做var x = "something"
那么它仍然是一个字符串,或者如果我var x = 12
那么它会改变类型和值。
如果分配null
,
那么您对仅需要创建的变量的占位符值有什么建议?
答案 0 :(得分:1)
typeof null
为"object"
新手js程序员假设undefined
和null
是相同的(他们不是),这是一个常见的错误。
答案 1 :(得分:1)
var x;
x = 6;
typeof x // 'number'
x = '6';
typeof x // 'string'
x = null;
typeof x // 'object'
x = {};
typeof x // 'object'
x = 3;
typeof x // 'number'
答案 2 :(得分:1)
默认值与无值不同。有时能够做出这种区分非常重要。
由于您确实需要某种方法来检测是否有值,因此您可以使用一个值来指示该值未定义,例如:undefined
。这确实意味着您的词典最初是空的。
根据您的数据类型,您还可以使用null
。当然,如果null
是可能的值,则您无法使用它。如果您没有安全的未定义值,您可以让另一个属性说出值,例如is value X set: yes/no
(这是模式/元数据方向的一步)。
我可以给你的一个提示是,如果你有数据,具有强类型数据类型,则使用模式语言来描述数据。您将基本上免费获得undefined
值检测。
答案 3 :(得分:1)
null =对象;
undefined =未指定类型
在Javascript中,一切都是某种形式的对象,除非它没有与任何数据相关联,在这种情况下它是undefined
。
所以你可能想要这样的东西:
var defaults = {
beats: "",
numberOfBeats: 0,
representation: undefined
};
然后在您的代码中,您可以通过以下方式查询representation
索引中是否有任何数据:
if(typeof defaults['representation'] === "undefined"){
// representation has not yet been defined
}