What is the use of `self.Clients.claim()`
<p>To register a service worker, I can call</p>

<pre><code>navigator.serviceWorker.register('/worker.js')
</code></pre>

<p>Every time the page loads it checks for an updated version of <code>worker.js</code>. If an update is found, the new worker won't be used until all the page's tabs are closed and then re-opened.  The solution I read was:</p>

<pre><code>self.addEventListener('install', function(event) {
  event.waitUntil(self.skipWaiting());
});
self.addEventListener('activate', function(event) {
  event.waitUntil(self.clients.claim());
});
</code></pre>

<p>I can understand the skipWaiting part, but what exactly does <code>clients.claim()</code> do?  I've done some simple tests and it seems to work as expected even without it.</p>