function-strict-mode.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. test("non strict-mode by default", () => {
  2. expect(isStrictMode()).toBeFalse();
  3. });
  4. test("use strict with double quotes", () => {
  5. "use strict";
  6. expect(isStrictMode()).toBeTrue();
  7. });
  8. // prettier-ignore
  9. test("use strict with single quotes", () => {
  10. 'use strict';
  11. expect(isStrictMode()).toBeTrue();
  12. });
  13. // prettier-ignore
  14. test("use strict with backticks does not yield strict mode", () => {
  15. `use strict`;
  16. expect(isStrictMode()).toBeFalse();
  17. });
  18. // prettier-ignore
  19. test("use strict with single quotes after statement does not yield strict mode code", () => {
  20. ;'use strict';
  21. expect(isStrictMode()).toBeFalse();
  22. });
  23. // prettier-ignore
  24. test("use strict with double quotes after statement does not yield strict mode code", () => {
  25. ;"use strict";
  26. expect(isStrictMode()).toBeFalse();
  27. });
  28. test("use strict interrupted by a line continuation does not yield strict mode code", () => {
  29. "use \
  30. strict";
  31. expect(isStrictMode()).toBeFalse();
  32. });
  33. test("strict mode propagates down the scope chain", () => {
  34. "use strict";
  35. expect(isStrictMode()).toBeTrue();
  36. (function () {
  37. expect(isStrictMode()).toBeTrue();
  38. })();
  39. });
  40. test("strict mode does not propagate up the scope chain", () => {
  41. expect(isStrictMode()).toBeFalse();
  42. (function () {
  43. "use strict";
  44. expect(isStrictMode()).toBeTrue();
  45. })();
  46. expect(isStrictMode()).toBeFalse();
  47. });
  48. test('only the string "use strict" yields strict mode code', () => {
  49. "use stric";
  50. expect(isStrictMode()).toBeFalse();
  51. });
  52. test("strict mode does not apply global object to |this|", () => {
  53. "use strict";
  54. let functionThis;
  55. (function () {
  56. functionThis = this;
  57. })();
  58. expect(functionThis).toBeUndefined();
  59. });