I have an xjs/ssjs script that, when called once works as expected, but when
called a second time I get:
TypeError: redeclaration of const
If I wait a few minutes and run the script again it works as expected then craps out. Is this a web browser issue? I tried setting the const(s) to undefined and then delete(const) but that did not resolve the redeclaration
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
})();
Sysop: | Ree |
---|---|
Location: | Toronto, ON |
Users: | 2 |
Nodes: | 10 (0 / 10) |
Uptime: | 115:30:08 |
Calls: | 375 |
Calls today: | 2 |
Files: | 2 |
Messages: | 38,886 |