Should not a value be able to be changed? I don't believe that you can change a function after definition; you can, however, change a function reference.
But references are also values. It's not a mutually exclusive thing
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)_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
|