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)
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss