JS的上下文中的值类型是什么意思?

时间:2011-11-29 08:57:52

标签: javascript

如果人们在JavaScript的上下文中谈到值类型是什么意思?我来自Java / C / C ++背景,之前从未听过这个术语。 Number String undefined null Boolean 值类型?

4 个答案:

答案 0 :(得分:3)

我想是的。他们称之为datatypes,就像任何其他编程语言一样。当然,如果变量具有类型,则值也是如此。

答案 1 :(得分:3)

在其他一些语言中,术语“值类型”与“引用类型”形成对比,其中值类型的一般分配涉及复制实际值,而引用类型的赋值意味着复制指针(与此相关,您可能已经听过在谈论函数参数时,术语“按值传递”和“按引用传递”。更多信息:http://en.wikipedia.org/wiki/Value_type

JavaScript也有这个价值与参考概念,但我不认为这是他们在ECMAScript Specification中的含义:

  

本规范中的算法操纵每个都具有关联类型的值。可能   值类型正是本节中定义的值。类型进一步细分为ECMAScript语言   类型和规格类型。   ECMAScript语言类型对应于ECMAScript直接操作的值   程序员使用ECMAScript语言。 ECMAScript语言类型是Undefined,Null,Boolean,   字符串,数字和对象。

正如你所看到的那样,我用斜体来表示他们正在谈论操纵“价值观”,然后继续谈论这些价值观可能具有的“类型”。在我看来,这更像是一个措辞不佳的情况,他们的意思是“可能的价值类型”......

当你说“如果人们谈论价值类型”时,你所谈论的是什么,我认为我们需要更多的背景来确保......

答案 2 :(得分:2)

是的,以及其他一些人。请参阅the specification

的第8节

答案 3 :(得分:1)

我认为它们是stringnumberbooleanundefined,因为当您将它们分配给另一个变量时,您会复制该值,而不是指针。 / p>

var a = 'abc';
var b = a;
a = 'def';
// b === 'abc'

var a = { b: 'abc' };
var b = a;
a.b = 'def';
// b.b === 'def'