This is because 'Fetching Data' is ‘truthy’, and so the && will always pass over it when it is listed first.

A New Proposed Feature: Optional ChainingThere is currently a proposal to allow ‘optional chaining’ when attempting to return a property deep in a tree-like structure.

Under the proposal, the question mark symbol ?.could be used to extract a property only if it is not null .

For example, we could refactor our example above to this.

state.

data?.

() , thus only returning data if it is not null .

Or, if we were mainly concerned about whether state was defined or not, we could return this.

state?.

data .

The proposal is currently at Stage 1, as an experimental feature.

You can read about it here, and you can use in your JavaScript now via Babel, by adding @babel/plugin-proposal-optional-chaining to your .

babelrc file.

4.

Convert to BooleanTYPE CONVERSIONBesides the regular boolean values true and false , JavaScript also treats all other values as either ‘truthy’ or ‘falsy’.

Unless otherwise defined, all values in JavaScript are ‘truthy’ with the exception of 0, "", null, undefined, NaN and of course false , which are ‘falsy’.

We can easily switch between true and false by using the negative operator ! , which will also convert the type to "boolean" .

const true = !0;const false = !1;const alsoFalse = !!0;console.

log(true); // Result: trueconsole.

log(typeof true); // Result: "boolean"This kind of type conversion can be handy in conditional statements, although the only reason you’d choose to define false as !1 is if you were playing code golf!5.

Convert to StringTYPE CONVERSIONTo quickly convert a number of a string, we can use the concatenation operator + followed by an empty set of quotation marks "" .

const val = 1 + "";console.

log(val); // Result: "1"console.

log(typeof val); // Result: "string"6.

Convert to NumberTYPE CONVERSIONThe opposite can be quickly achieved using the addition operator + .

let int = "15";int = +int;console.

log(int); // Result: 15console.

log(typeof int); Result: "number"This may also be used to convert booleans to numbers, as below:console.

log(+true); // Return: 1console.

log(+false); // Return: 0There may be contexts where the + will be interpreted as the concatenation operator rather than the addition operator.

When that happens (and you want to return an integer, not a float) you can instead use two tildes: ~~ .

A tilde, known as the ‘bitwise NOT operator’, is an operator equivalent to-n — 1 .

log(array); // Result: [0, 1, 2, 3]Note that this trick only works for array.

length and not for other types with a length property (such as strings or functions), nor for Set.

prototype.

size.

11.

Get the Last Item(s) in an ArrayARRAYSThe array method slice() can take negative integers, and if provided it will take values from the end of the array rather than the beginning.

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];console.

log(array.

slice(-1)); // Result: [9]console.

log(array.

slice(-2)); // Result: [8, 9]console.

log(array.

slice(-3)); // Result: [7, 8, 9]12.

Format JSON CodeJSONLastly, you may have used JSON.

stringify before, but did you realise it can also help indent your JSON for you?The stringify() method takes two optional parameters: a replacer function, which you can use to filter the JSON that is displayed, and a space value.

The space value takes an integer for the number of spaces you want or a string (such as ' ' to insert tabs), and it can make it a lot easier to read fetched JSON data.

console.

log(JSON.

stringify({ alpha: 'A', beta: 'B' }, null, ' '));// Result:// '{// "alpha": A,// "beta": B// }'Overall, I hope you found these tips as useful as I did when I first discovered them.

Got any JavaScript tricks of your own?.I’d love to read them in the comments below!.