On Mar 21, 2011, at 8:12 AM, Felix Klock II wrote:
ES5 discussion group (cc'ing Lars)-
(My apologies if the issue described below has already been discussed; I could not find mention of it in the ES5 erratum , nor is it corrected in the 5.1 maintenance revision of the ES5 specification .)
In the ES5 spec from December 2009, at the top of page 206, there is a bit of text that is probably erroneously referring to the italicized /space/ parameter.
In particular, the text in question (which is part of the definition of the abstract operation "JO(value)") reads, starting from the bottom of page 205:
ii. Let /member/ be the concatenation of /member/ and the colon character.
iii. If /gap/ is not the empty String
1. Let /member/ be the concatenation of /member/ and the /space/ character.
The text "the /space/ character", interpreted literally, does not make sense; the use of italicized /space/ would be interpreted as a reference to the Number or String value, which do not generally serve as names for characters.
Lars Hansen pointed out this problem in a comment while making an Actionscript implementation of the JSON class .
A reasonable hypothesis is that this is a formatting typo, and that the occurrence of the word "space" should not have been italicized. However, the text introducing the "JO(value)" abstract operation explicitly states that the operation has access to /space/ of the invocation of the stringify method, while there are no other references to /space/ that I can see in the text defining the "JO(value)" abstract operation. So that would also need to be corrected if this is just a formatting typo.
It's a typo, space in line 8.iii.1 should not be italic. It is actually referring to the Unicode space character (character code 32, decimal).
The reference to space in the intro text is superfluous. It is also superfluous in the into to the JA abstract operation.
Looks like this was fixed in ES2015.