testing here: https://perchance.org/z7l103ul1q#edit
I have quite a big list of variables, that cause errors if undefined or null. So, I wanted to run a FOR through all of them at the very beginning. But perchance functions always ask to return something. How do I do it?
I think I see the idea you have. What is the scope of the variable you are trying to set it to? You currently have it as:
for (const [key, value] of Object.entries(variablesMapping)) {
if (this[key] === undefined || this[key] === null) {
this[key] = value;
}
}
You are using this, which refers to the function. It should probably be set into what you have your initial variables, e.g. if you have your variables as properties in a variable called inputs, then it should be:
for (const [key, value] of Object.entries(variablesMapping)) {
if (inputs[key] === undefined || inputs[key] === null) {
inputs[key] = value;
}
}
So that if you use it like inputs.charNum, it would be set to the default that you have set with the defining() method.
the variables are supposed to be a global variables, just like if it wrote [charNum==undefined?chaNum=1:""]. charNum, for example, is the value of a slider. But there are all kind of html elements associated with different variables, from radio inputs to strings.
If you are using HTML inputs, you can easily access their values like checkbox.checked for checkboxes and radio buttons, textinput.value for input values and select dropdowns, in which you can also set their default values for each one natively, unless the function that you've made is for 'resetting' to default values.
I would also go with the way that you have a single global object for all of your variables, just for organizing and ease of access.
That's what I'm doing. I'm setting those values to all html elements, as well as using them in the lists. That's why I need to declare them to avoid "undefined" errors in the list section, for the first time users or after a remember(root, forget). Right now I have a long construction with something like this, [actor==undefined?actor="Any":""], it's clunky but it works.
The "optimized" version that I was trying to make and asked help for with FOR construction and window[key] =... actually worked but in the HTML part. You're right it, THIS of course, referred to the function not the document. However, while it works for the elements, somehow the lists "forget" them immediately after the first update(). So, I'm just keeping it as is for now with [if undefined then value].