0

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

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

我知道 JS 非常擅长知道哪种类型(字符串和数字之间的那些疯狂情况除外),但是可以null被所有类型覆盖,然后那个变量就是那种类型?

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

如果已分配,它的类型是null什么?

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

4

4 回答 4

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'
于 2013-06-21T15:42:37.250 回答
1

默认值与无不同。有时,能够做出这种区分很重要。

由于您确实需要某种方法来检测是否有值,因此您可以使用指示该值未定义的值,例如:undefined。这确实意味着您的字典最初是空的。

根据您的数据类型,您还可以使用null. 当然,如果null是一个可能的值,你就不能使用它。如果您没有安全的未定义值,则可以让另一个属性说明该值,例如is value X set: yes/no(这是朝着模式/元数据方向迈出的一步)。


我可以给您的一个提示是,如果您有数据,并且具有强类型的数据类型,请使用模式语言来描述数据。您将undefined基本上免费获得价值检测。

于 2013-06-21T15:44:34.533 回答
1

The typeof null is "object"

And it's a common mistake that novice js programmers make to assume that undefined and null are the same (they're not).

于 2013-06-21T15:39:38.483 回答
1

空=对象;

未定义 = 未指定类型

在 Javascript 中,一切都是某种形式的对象,除非它没有与任何数据相关联,在这种情况下它是undefined.

所以你可能想要这样的东西:

var defaults = {
  beats: "",
  numberOfBeats: 0,
  representation: undefined
};

然后在您的代码中,您可以通过以下方式查询representation索引中是否包含任何数据:

if(typeof defaults['representation'] === "undefined"){

    // representation has not yet been defined

}
于 2013-06-21T15:49:13.573 回答