<script> "use strict" function A() {} </script> <script> function B() {} </script> <script> window.onload = function() { let a = Reflect.ownKeys(A); let b = Reflect.ownKeys(B); document.getElementById("output").value = (a.includes("arguments") === b.includes("arguments")); } </script>
Mozilla Firefox reports true. Google Chrome and node.js report false. Which one is correct? I looked through Mozilla's Bugzilla, Google Chrome's Monorail, and the ES7 spec to try figuring this out. The closest I could get was section 9.2.7 of the ES7 spec. [1] Right now I have an inadvertent mix of strict code / non-strict code in my membrane, and this difference is causing my most recent patch to fail tests in nodejs and Google Chrome, and to pass in Mozilla Firefox. In Chrome and nodejs, I get: TypeError: 'ownKeys' on proxy: trap result did not include 'arguments' If it turns out Google & nodejs are correct, this could be an issue going forward: I can't control whether my membrane library's users are running strict mode code or not... likewise, I don't know if my code should be consistently strict mode or consistently non-strict. (I feel that a mix is not good, except for finding bugs like this...) My apologies for treating this list as a help forum, but I'm just not sure where else to go... [1] http://www.ecma-international.org/ecma-262/7.0/#sec-addrestrictedfunctionproperties -- "The first step in confirming there is a bug in someone else's work is confirming there are no bugs in your own." -- Alexander J. Vincent, June 30, 2001
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss