I just wasted about 45 minutes on a stupid mistake - again.
So, I am reading a context value, and need it to be something rather than undefined
.
If it is a number, the option is something like:
let x = context.get("blah") || 0;
Which means if blah
isn't set (for what ever reason) x
is given the value of 0
.
I'm not exactly sure about text, but for now, I will let that go (though I know it will bite me soon).
Say I am doing something and it has a valid range of 0 - 255.
So 0
is as valid as 1
, or 255
.
But I want the value returned if the context isn't set to be .... say 123. (Half 255)
How do I do that?
I can't set it to 0
then say if == 0 make it 123
because if it is 0
it will be changed to 123
.
I am missing something it would seem.
Did you try
let x = context.get("blah") || 123;
Yes, and it drove me around the twist for 45 minutes because when blah
was equal to 0
it got changed to 123. Or something like that.
Then I realised what was going on and make the last part || 0
and the problem went away.
That’s right, the retrieved value is evaluated. Zero (0) evaluates to false so it would then use the 123. It’s JavaScript coercion:
A || B
returns the value A if A can be coerced into true
; otherwise, it returns B .
Ok, thanks.
It would seem I didn't understand the problem and so asked the wrong question - way back then.
The solution I was given worked for that case and as a result I (wrongly) used it for other cases.
Without wanting to start a new thread, can someone help me with this new question:
I want a line (or so) of code (I hope one) that can be used when testing the existence of context variables. (context, flow or global)
I want to test for the existence and if the variable doesn't exist returns something.
This could be text, number or logic (true
/false
)
Then I could maybe use it in future in stead of that which I am using and avoiding the mistake/s I made today from happening again.
Colin
29 September 2020 08:44
6
The || value
technique only works if value
is zero or if zero is not a valid value for your system. If you need to initialise it to 123 and 0 is a valid value then you need to get
it and then test for undefined
using an explicit if
test such as if (x == undefined) {
1 Like
Hi @Trying_to_learn
If a value doesn't exist, then the call to context.get("blah")
will return undefined
.
You will need to explicitly test for that:
let x = context.get("blah");
if (x === undefined) { x = 123; }
2 Likes
Thanks @knolleary and @Colin .
I shall roll that out as my way of testing from now on.
system
Closed
14 October 2020 06:23
9
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.