From 5b5756b7146b2a926b3f5fac0d341ccad1e25dfb Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Thu, 16 Jun 2022 10:06:50 -0500 Subject: [PATCH] Add Generate A V4 UUID In The Browser as a JavaScript TIL --- README.md | 3 ++- .../generate-a-v4-uuid-in-the-browser.md | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 javascript/generate-a-v4-uuid-in-the-browser.md diff --git a/README.md b/README.md index c70ca0c..2c46192 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1225 TILs and counting..._ +_1226 TILs and counting..._ --- @@ -408,6 +408,7 @@ _1225 TILs and counting..._ - [for...in Iterates Over Object Properties](javascript/for-in-iterates-over-object-properties.md) - [Formatting Values With Units For Display](javascript/formatting-values-with-units-for-display.md) - [Freeze An Object, Sorta](javascript/freeze-an-object-sorta.md) +- [Generate A V4 UUID In The Browser](javascript/generate-a-v4-uuid-in-the-browser.md) - [Generate Random Integers](javascript/generate-random-integers.md) - [Get The Location And Size Of An Element](javascript/get-the-location-and-size-of-an-element.md) - [Get The Response Status From An Axios Error](javascript/get-the-response-status-from-an-axios-error.md) diff --git a/javascript/generate-a-v4-uuid-in-the-browser.md b/javascript/generate-a-v4-uuid-in-the-browser.md new file mode 100644 index 0000000..a8e9f84 --- /dev/null +++ b/javascript/generate-a-v4-uuid-in-the-browser.md @@ -0,0 +1,24 @@ +# Generate A V4 UUID In The Browser + +The [Web Crypto +API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) provides +a +[`randomUUID`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID) +function for generating v4 UUID values which are cryptographically random. + +It works like this: + +```javascript +> crypto.randomUUID() +'f2050c5e-af52-4ca2-b4d6-23758b3396c9' +> crypto.randomUUID() +'079d5186-84d4-41d6-a660-edafb6a74c86' +``` + +No two UUIDs will be the same. This is a great way to generate IDs that are +guaranteed to be unique. Or if you need a value that is practically impossible +to guess. + +I was surprised to see that as of writing this, this function has great browser +support. Modern versions of all browsers except Internet Explorer have +implemented `randomUUID`.