Since properties order in objects is not guaranteed in JavaScript, how does JSON.stringify() actually behave?

后端 未结 1 1695
醉话见心
醉话见心 2021-01-27 02:11

Since properties order in objects is not guaranteed in JavaScript, how does JSON.stringify() actually behave?

  1. Is the following always true (same object)?
相关标签:
1条回答
  • 2021-01-27 03:02

    I looked at the ECMAScript standard for JSON.stringify: http://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3

    This seems informative:

    For each element P of K.

    Let strP be the result of calling the abstract operation Str with arguments P and value.
    If strP is not undefined
        Let member be the result of calling the abstract operation Quote with argument P.
        Let member be the concatenation of member and the colon character.
        If gap is not the empty String
            Let member be the concatenation of member and the space character.
        Let member be the concatenation of member and strP.
        Append member to partial.
    

    The "append" in the final step strongly implies that the results are ordered per the source, and I can confirm your code assertions pass on both Chromium and Firefox.

    EDIT: For "P of K", this might be relevant too:

    The ordering of the Strings should be the same as that used by the Object.keys standard built-in function.

    It seems that your assertions are true so long as the comparisons are kept in one browser.

    0 讨论(0)
提交回复
热议问题