T.J. Crowder (2017-08-19T17:34:45.000Z)
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-language-types
[2]: https://en.wikipedia.org/wiki/Value_(computer_science)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170819/2443742c/attachment.html>
tj.crowder at farsightsoftware.com (2017-08-19T17:42:50.931Z)
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 list, 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-language-types
[2]: https://en.wikipedia.org/wiki/Value_(computer_science)
tj.crowder at farsightsoftware.com (2017-08-19T17:40:00.371Z)
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-language-types
[2]: https://en.wikipedia.org/wiki/Value_(computer_science)