Subj : TypeError: redeclaration of const
To   : Mortifis
From : echicken
Date : Mon Aug 19 2019 09:18 am

 Re: TypeError: redeclaration of const
 By: Mortifis to All on Mon Aug 19 2019 07:58:07

Mo> I have an xjs/ssjs script that, when called once works as expected, but when
Mo> called a second time I get:

Mo> TypeError: redeclaration of const

Mo> If I wait a few minutes and run the script again it works as expected then
Mo> craps out. Is this a web browser issue? I tried setting the const(s) to
Mo> undefined and then delete(const) but that did not resolve the redeclaration
Mo> issue.

The Synchronet webserver reuses the same JS context across multiple requests from the same client.  It can take a few minutes for the client's session to expire and a new context to be created.  So basically you may end up reusing the same global scope across multiple executions of a script.

So using 'const' at the *top level* of an XJS/SSJS script is inadvisable.  Use 'var' instead.

It's okay to use 'const' inside of functions.

It's probably also okay to wrap your entire script in an IIFE so that you get a fresh scope for each request.  However, this context reuse was done for performance reasons, so you'd be sacrificing any performance gain by doing that.

(function () {
 // This is an IIFE
 // It's an Immediately Invoked Function Expression
})();

---
echicken
electronic chicken bbs - bbs.electronicchicken.com
� Synchronet � electronic chicken bbs - bbs.electronicchicken.com