I just saw someone use this piece of code:
ctx = canvas.getContext && canvas.getContext('2d');
How does the double ampersand work in this context? Would it not just assign "true" to the ctx variable?
This is a common way to make sure your function exists before you call it.
It works like this (From developer.mozilla.com):
expr1 && expr2Returns
expr1if it can be converted to
false; otherwise, returns
expr2. Thus, when used with Boolean values,
trueif both operands are
true; otherwise, returns
4 && 5 Returns 5, not true.
In your case, if the first expression is
undefined (which is convertible to false), then
ctx will be false, and the second expression does not get evaluated. If the first expression is a function (which cannot be converted to
It will assign the return value of
canvas.getContext is actually a function.
The part on the left is just to avoid an error. It makes sure that
canvas has a
getContext property before trying to call
getContext(). This way, the code won't call
canvas.getContext() if the function doesn't exist. If it didn't check first and called when the function didn't exist, an error would be logged to the console and execution would halt.
©2020 All rights reserved.