I recently started a new job as a platform engineer at Farewill. I knew I would be writing more Javascript than I had done in my last role so wanted to remind myself of the less-used parts of the language that I had forgotten about or just never knew.
I decided to go through The Modern JavaScript Tutorial after finding their section on promises a useful reference. I liked that it thoroughly covered modern Javascript and was written in a way to cover both client and server environments.
Calling Functions on Numbers with Two Dots
In Javascript, you can write the numeric literal 12 in a few ways including 12
, 12.0
and even 12.
(with a trailing dot).
When reading about numbers I found that 12.toString()
is actually a syntax error. The Javascript parser will assume the ‘.
’ belongs to the number rather than the function call.
You can instead call a function on a numeric literal by putting brackets around the number or by using two dots after the number.
12.toString() // Throws: SyntaxError: No identifiers allowed directly after numeric literal
(12).toString() // Returns: "12"
12..toString() // Returns: "12"
Using Dynamic Property Names when Defining New Objects
I knew you could use object[keyName] = value
to add a dynamic property to an object. What I didn’t know was that you could also set dynamic properties when creating an object by using square brackets.
In this example I’m using a dynamic key to internationalise the key ‘name’.
const getName = (language, name) => {
const nameKey = language === 'fr' ? 'nom' : 'name'
return {
[nameKey]: name
}
}
This is called computed properties and you can put any expression between the square brackets, not just the name of a variable.
Truncating Arrays by Assigning to Length
Did you know that the length
property of arrays is writable? You can use it to truncate an array.
const letters = ['a', 'b', 'c', 'd']
letters.length = 2 // letters is now ['a', 'b']
This feels less special when you know that property setters can be added to your own objects to call functions when a property is changed.
This method of truncation doesn’t work with strings even though they also have a length
property. I prefer the slice
function rather than setting length
since I feel it’s more intention revealing and is defined on strings too.
Excited to be Writing Javascript Again
I get a nice feeling each time I make use of import
, arrow functions, string interpolation or anything else that wasn’t available 5 years ago. Without all of these improvements to the language I think I would find Javascript frustrating to use every day.
If you’re learning Javascript or want a refresher The Modern JavaScript Tutorial is a good place to start.