Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Value Type - Primitive #1842

Closed
VovaSv opened this issue Sep 27, 2023 · 7 comments
Closed

Value Type - Primitive #1842

VovaSv opened this issue Sep 27, 2023 · 7 comments

Comments

@VovaSv
Copy link

VovaSv commented Sep 27, 2023

https://github.com/getify/You-Dont-Know-JS/blame/85b2e6c5fa03b95d044015d6e44b72b8beb6a53b/types-grammar/ch1.md#L16

Maybe it is already raised but...

We are using here term like "value-types" to describe the primitive value and not primitive type (which according to ECMAScript primitive type not exist) in JS?

"The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, BigInt, and Object. " - which actually means no records for primitive type in JS only reference for primitive values?
https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values

@getify
Copy link
Owner

getify commented Sep 27, 2023

every language type that is not an object type is de facto a primitive type.

@VovaSv
Copy link
Author

VovaSv commented Sep 28, 2023

I don't think that word "de facto" is suitable do describe the primitive type term .
I don't think that who write ECMA standards don't use primitive type term in their documents because this is a "de facto".
I pretty sure that primitive type it's not a formal term defined in the ECMAScript specification itself and just a simplification often used informally to describe these and ECMAScript specification uses the term "types" to describe the fundamental data classifications in JavaScript.

What do you think?

4.4.5 primitive value
member of one of the types Undefined, Null, Boolean, Number, BigInt, Symbol, or String as defined in clause 6

6.1 ECMAScript Language Types
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, BigInt, and Object. An ECMAScript language value is a value that is characterized by an ECMAScript language type.

@getify
Copy link
Owner

getify commented Sep 28, 2023

I cannot see how "primitive value" does not automatically and clearly imply "primitive type"?

If primitive values exist (they do), they have value types (they do), then those value types collectively are referencable as "primitive types". Otherwise known as "types of the primitive values", if you can't call those "primitive types" I think it's useless pedantry.

This seems obvious and incontrovertible to me.

In any case, there is zero chance I will change from how I label them, even if you clearly disagree, so I'm not sure how much more we have to discuss here.

@VovaSv
Copy link
Author

VovaSv commented Sep 30, 2023

When you are talking about primitive type you refer to type of value not to type of variable right?

@getify
Copy link
Owner

getify commented Sep 30, 2023

of course... that's why I use the phrase "value type" a bunch. JS variables don't have types.

@VovaSv
Copy link
Author

VovaSv commented Oct 4, 2023

Another question not related to this topic.
Do we have a topic in You-Dont-Know-JS that explain what JS is not?

I mean like a lot of people think that V8 is JS, EventLoop is JS, Callback Queue is JS, Call Stack is JS, Heap is JS, Timers is JS and so on, when basically all these parts are part of the broader JavaScript runtime, components that work together to execute and manage JavaScript code.

@getify
Copy link
Owner

getify commented Oct 5, 2023

At least some of those differences are covered here I believe: https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/get-started/ch1.md

@getify getify closed this as not planned Won't fix, can't repro, duplicate, stale Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants