Are objects values?

T.J. Crowder tj.crowder at
Sat Aug 19 17:34:45 UTC 2017

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

> 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
"'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. :-)


-- T.J. Crowder

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list