Are objects values?

kdex kdex at kdex.de
Sat Aug 19 18:02:00 UTC 2017


Yes, objects/functions are values, but they are not *primitive* values.

The current draft uses the phrasing "object value" several times.

Section 4.3.3 explains that objects are "members of type Object", and a type 
is, by definition, a set of values. Therefore, objects must be values.

On Saturday, August 19, 2017 7:34:45 PM CEST T.J. Crowder wrote:
> I recently had an exchange which started out with my "correcting" someone
> who said "Functions are values" by saying "Function *references* are
> values. Functions are objects." He/she replied that objects are also
> values, and after much back and forth, cited [this part of the JavaScript
> 
> spec][1]:
> > An ECMAScript *language type* corresponds to values that are directly
> 
> manipulated by an ECMAScript programmer using the ECMAScript language. The
> ECMAScript language types are Undefined, Null, Boolean, String, Symbol,
> Number, and Object. An *ECMAScript language value* is a value that is
> characterized by an ECMAScript language type.
> 
> ...and said "So objects are values."
> 
> Is he/she right? [Wikpedia][2] isn't much help, at least not to me. I asked
> a friend who, unlike me, did get comp sci theory at Uni, and he said
> "...you're not wrong, but it's very Humpty Dumpty: When I use a word, it
> means just what I choose it to mean -- neither more nor less."
> 
> I've used the term "value" in explanations of variables, properties, and
> function arguments and in particular when explaining why `b = a` copies an
> object reference, not an object, from `a` to `b`. (Saying the *object
> reference* is the value.) It's been an invaluable aid to helping people
> "get" object references.
> 
> I'd be very sorry to hear that I was misusing a term of art. But I'd rather
> know. :-)
> 
> If I'm misusing "value," what should I use instead for that thing that
> actually gets stored in memory? How to explain the `b = a` thing with
> object references to beginners?
> 
> This is slightly off-topic for the thread, but also not, as I spend a lot
> of time explaining things to JavaScript beginners, and the authors of the
> text being used to tell me I'm wrong are on this list. :-)
> 
> Thanks,
> 
> -- T.J. Crowder
> 
> [1]:
> http://www.ecma-international.org/ecma-262/8.0/index.html#sec-ecmascript-lan
> guage-types [2]: https://en.wikipedia.org/wiki/Value_(computer_science)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170819/349a65fe/attachment.sig>


More information about the es-discuss mailing list