所有JS类型的常规构造函数

时间:2013-06-21 15:36:53

标签: javascript

如果我试图声明一个变量并且我需要提供一个默认情况,因为它不会让我创建没有值的键,我想我可以为所有空变量创建相同的基本值,但它仍然当我实际为它赋值时,它是我希望它的类型。

var x = "";
var y = 0;
var z = null;

我知道JS非常了解哪种类型(除了字符串和数字之间的那些疯狂情况),但null能够被所有类型覆盖,然后该变量将是那种?

所以如果我们有var x = "";那么x已经是一个字符串了。显然,如果我做var x = "something"那么它仍然是一个字符串,或者如果我var x = 12那么它会改变类型和值。

如果分配null

是什么类型

那么您对仅需要创建的变量的占位符值有什么建议?

4 个答案:

答案 0 :(得分:1)

typeof null"object"

新手js程序员假设undefinednull是相同的(他们不是),这是一个常见的错误。

答案 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

}