From d4e97b17abc079f1bfcd689b4518a288b6a80bf8 Mon Sep 17 00:00:00 2001 From: Jack Karamanian Date: Sat, 30 May 2020 01:40:49 -0500 Subject: [PATCH] LibJS: Use a non-arrow function to check the |this| value in the callback for Array.prototype.{reduce,reduceRight} Arrow functions always retain the |this| binding. Running this code in Node: [1, 2].reduce(() => { "use strict"; console.log(this === undefined) } Output: false --- Libraries/LibJS/Tests/Array.prototype.reduce.js | 2 +- Libraries/LibJS/Tests/Array.prototype.reduceRight.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Libraries/LibJS/Tests/Array.prototype.reduce.js b/Libraries/LibJS/Tests/Array.prototype.reduce.js index 5189f89aae..eeaf5a423d 100644 --- a/Libraries/LibJS/Tests/Array.prototype.reduce.js +++ b/Libraries/LibJS/Tests/Array.prototype.reduce.js @@ -31,7 +31,7 @@ try { message: "Reduce of empty array with no initial value" }); - [1, 2].reduce(() => { assert(this === undefined) }); + [1, 2].reduce(function () { assert(this === undefined) }); var callbackCalled = 0; var callback = () => { callbackCalled++; return true }; diff --git a/Libraries/LibJS/Tests/Array.prototype.reduceRight.js b/Libraries/LibJS/Tests/Array.prototype.reduceRight.js index 98c2880990..6e20d9ea48 100644 --- a/Libraries/LibJS/Tests/Array.prototype.reduceRight.js +++ b/Libraries/LibJS/Tests/Array.prototype.reduceRight.js @@ -43,7 +43,7 @@ try { } ); - [1, 2].reduceRight(() => { + [1, 2].reduceRight(function () { assert(this === undefined); });