The short answer is that these are all following the same core formats, but there is one difference- JSON uses double quotes around names, while JavaScript does not. The distinction in the format specifications you have listed is the presentation of double quotes (") to surround the name portion of JSON object name/value pairs.
The official ECMA JSON Data Interchange Format document does not specifically say that the name portions of the name/value pair must be wrapped in quotation marks. See http://json.org/ as well for an even briefer summary. However, the JSON specifically does say that object notation in JSON is specifically defined by specifying a string before and a value after a colon (which constitutes the name/value pair), and both of those parts are to be surrounded by curly brackets :
An object structure is represented as a pair of curly bracket tokens
surrounding zero or more name/value pairs. A name is a string. A
single colon token follows each name, separating the name from the
value (again, from ECMA JSON Data Interchange Format)
The specification further details that:
A string is a sequence of Unicode code points wrapped with quotation
marks
Since the very definition of the object is a name/value pair, in which
"A name is a string" (section 6 of the same document)
One could infer that the name should always be encapsulated by quotes when referring to JSON (though not to JavaScript).
JSON itself literally means "JavaScript Object Notation", which means that its origination was within the scope of much JavaScript usage. In JavaScript itself, this:
{ name: "value portion" }
is practically equivalent to this:
{ "name": "value portion" }
The problem with always assuming that this is good practice when coding in JavaScript is that name portions of name/value pairs of a JSON string/object could possibly contain white space, such as
{ "name portion": "value portion" }
In this case, the following would be syntactically incorrect:
{ name portion: "value portion" }
For this reason, many people programming JavaScript choose to always use double quotes around the name portion of the name/value objects so that it maintains compatibility with JSON objects during construction or use.