15 Jan

JavaScript Labels

No matter how long you’ve been a JavaScript developer, there will always be language features that you didn’t know about until you saw them in a fringe piece of code. Your reaction generally is a bit like: One of those features I see developers quizically trying to figure out is JavaScript labels, which allow you […]

The post JavaScript Labels appeared first on David Walsh Blog.

03 Jan

Background Sync with Service Workers

Service workers have been having a moment. In March 2018, iOS Safari began including service workers — so all major browsers at this point support offline options. And this is more important than ever — 20% of adults in the United States are without Internet at home, leaving these individuals relying solely on a cellphone […]

The post Background Sync with Service Workers appeared first on David Walsh Blog.

03 Jan

Background Sync with Service Workers

Service workers have been having a moment. In March 2018, iOS Safari began including service workers — so all major browsers at this point support offline options. And this is more important than ever — 20% of adults in the United States are without Internet at home, leaving these individuals relying solely on a cellphone […]

The post Background Sync with Service Workers appeared first on David Walsh Blog.

26 Nov

You might not need a loop

Ire Aderinokun has written a nifty piece using loops and when we might consider replacing it with another method, say .map() and .filter(). I particularly like what she has to say here:

As I mentioned earlier, loops are a great tool for a lot of cases, and the existence of these new methods doesn't mean that loops shouldn't be used at all.

I think these methods are great because they provide code that is in a way self-documenting. When …

The post You might not need a loop appeared first on CSS-Tricks.

09 Nov

Object.fromEntries

The Object object has been buffed with useful methods over the past few years.  Object.keys, Object.values, Object.freeze, and Object.assign all address frequently desired functionality.  One of the new Object methods is fromEntries, which accepts a Map or map-like array nesting and converts it to a useful object literal! Convert Map to Object Converting a Map to a key:value […]

The post Object.fromEntries appeared first on David Walsh Blog.

24 Oct

Demystifying JavaScript Testing

Many people have messaged me, confused about where to get started with testing. Just like everything else in software, we work hard to build abstractions to make our jobs easier. But that amount of abstraction evolves over time, until the only ones who really understand it are the ones who built the abstraction in the first place. Everyone else is left with taking the terms, APIs, and tools at face value and struggling to make things work.

One thing I …

The post Demystifying JavaScript Testing appeared first on CSS-Tricks.

23 Oct

How to stop using console.log() and start using your browser’s debugger

Whenever I see someone really effectively debug JavaScript in the browser, they use the DevTools tooling to do it. Setting breakpoints and hopping over them and such. That, as opposed to sprinkling console.log() (and friends) statements all around your code.

Parag Zaveri wrote about the transition and it has clearly resonated with lots of folks! (7.5k claps on Medium as I write).

I know I have hangups about it...

Part of debugging is not just inspecting code once as-is;

The post How to stop using console.log() and start using your browser’s debugger appeared first on CSS-Tricks.

17 Oct

Why Using reduce() to Sequentially Resolve Promises Works

Writing asynchronous JavaScript without using the Promise object is a lot like baking a cake with your eyes closed. It can be done, but it's gonna be messy and you'll probably end up burning yourself.

I won't say it's necessary, but you get the idea. It's real nice. Sometimes, though, it needs a little help to solve some unique challenges, like when you're trying to sequentially resolve a bunch of promises in order, one after the other. A trick …

The post Why Using reduce() to Sequentially Resolve Promises Works appeared first on CSS-Tricks.

08 Oct

How to Get and Set CSS Variable Values with JavaScript

CSS variables are a very welcome addition to the language, despite them being incredibly basic.  Sure we could use SASS or stylus but languages should never count on developers relying on frameworks and toolkits to accomplish what we know we need.  And just like every other part of a webpage, you can get and manipulate […]

The post How to Get and Set CSS Variable Values with JavaScript appeared first on David Walsh Blog.