Javascript
1. Javascript  js
properties
ID: d9226de2-4b80-4193-a06e-e3185ffb5217CREATED: <2025-01-18 Sat 20:46>
I don't have much direct use for javascript, but given its popularity and status as the de-facto web language it is necessary learning for all students of the internet.
- on javascript versions
JS has been around since the 90s where it was introduce with a typical versioning scheme starting at 1.0. Some transpilers such as parenscript reference this versioning scheme (
*js-target-version*is "1.3")The most significant change in JavaScript 1.3 was compliance with ECMA-262 and Unicode by removing inconsistencies between JavaScript 1.2 and the new ECMA standard (which was published in June 1997). Additional features of version 1.2, at the time not specified by ECMA-262 were kept in the JavaScript language
- ECMA took over in the late 90s and it became ES1-ES6, but now it seems there is a yearly cadence and they should use a simple integer??
- ES5 seems to be the minimum for web browsers - 2009 version
- ES6 is generally supported by all versions - 2015 version
- AFTER 2015, went to a yearly release cadence (JS 2016 - JS 2025)
- as of 2025 we are on the 16th Edition of ECMAScript
- ECMAScript® 2026 Language Specification (latest draft)
- tc39/test262: Official ECMAScript Conformance Test Suite
version detection is a waste of time in JS
- instead, use feature detection
- Implementing feature detection - Learn web development | MDN
- John Resig: Future-Proofing Javascript Libraries
- Checking Javascript Version (Why It Makes No Sense)
function supports_canvas() { return !!document.createElement("canvas").getContext; } if (supports_canvas()) { // Create and draw on canvas elements }The double NOT in the above example (!!) is a way to force a return value to become a "proper" boolean value, rather than a Truthy/Falsy value that may skew the results.
if (window.matchMedia("(width <= 480px)").matches) { // run JavaScript in here. }- we always want to avoid this stuff (just upgrade your browser silly) Polyfill - Glossary | MDN
- Feature Detection in JavaScript | Medium
if (typeof fetch === "function") { fetch("/data.json") .then(res => res.json()) .then(data => { console.log("Fetched data:", data); }); } // check for web share API if (typeof navigator.share === "function") { navigator.share({ title: "Web Feature Example", text: "This device supports sharing", url: window.location.href }); } // using the ?. operator const penSupported = (navigator?.maxTouchPoints ?? 0) > 0 && ("PointerEvent" in window); if (penSupported) { console.log("Device supports pointer input."); } // check color-scheme const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; if (prefersDark) { document.documentElement.classList.add("dark-theme"); } // check hover input const hasHover = window.matchMedia("(hover: hover)").matches; if (hasHover) { document.body.classList.add("hover-supported"); }
1.1. Runtimes
properties
ID: f591261a-576f-4e4f-87c3-e19833b85eacCREATED: <2025-06-03 Tue 21:21>
JS is a broad ecosystem with several runtimes, usually (but not always) associated with major web browsers.
1.1.1. Deno
properties
ID: ce8b2093-0cd1-4d6f-b174-ba4c20124bb4CREATED: <2025-06-03 Tue 21:21>
1.1.2. Node.js
properties
ID: 1252c186-c72a-4a0e-b2d9-b325b826cea5CREATED: <2025-06-03 Tue 21:21>
1.1.3. SpiderMonkey
properties
ID: 66853806-45a7-4e01-be31-29c6f76d8f6dCREATED: <2025-09-21 Sun 17:51>
- used in Mozilla Firefox
1.1.4. V8
properties
ID: ba734e40-8fff-43b1-a68d-3d7a1c2afe8dCREATED: <2025-09-21 Sun 17:52>
- used in Google Chrome
1.1.5. JavaScriptCore
properties
ID: 302ab51f-539e-400e-8f59-124f1cb89676CREATED: <2025-09-21 Sun 17:52>
- used in Apple Safari
1.2. Libraries
properties
ID: 7ddd2d60-6a99-4948-aa7b-f36dc9839599CREATED: <2025-03-02 Sun 20:46>
1.2.1. Minisearch
properties
ID: fe82f0c8-b506-46b6-8384-d9439baad99cCREATED: <2025-10-12 Sun 22:44>
1.2.2. Folk.js
properties
ID: 54f1f814-5b88-4f46-83aa-cd26841b1dfaCREATED: <2025-10-12 Sun 22:45>
1.2.3. 3d-force-graph
properties
ID: ff42d3aa-94cf-4f88-8fe7-9f54fcaf95f6CREATED: <2025-10-12 Sun 22:45>
edges
– [BROKEN LINK: github:vasturiano/3d-force-graph]
1.2.4. WebCola
properties
ID: 1dd1ff5b-c2bb-47ff-96d0-f56d2fac465bCREATED: <2025-03-02 Sun 20:46>
1.2.5. Cytoscape.js
properties
ID: 5886ca2e-a096-4f08-b08e-75da2c12109aCREATED: <2025-03-02 Sun 20:48>
1.2.6. Chart.js
properties
ID: 9be0cef1-830d-4d76-970e-f786cd60d48fCREATED: <2025-03-13 Thu 20:26>
1.2.7. SVG.js
properties
ID: b2f13ede-db9d-494b-a454-515496cb6b7eCREATED: <2025-03-02 Sun 20:49>
1.2.8. d3.js
properties
ID: 84bd750f-75f0-4b23-b18e-7868783fdacbCREATED: <2025-03-02 Sun 20:49>
- d3-force-3d
properties
ID: 3f02fc98-932e-41da-a810-2b8c4b31083f
CREATED: <2025-10-12 Sun 22:47>edges
– [BROKEN LINK: github:vasturiano/d3-force-3d]
– Multi-Dimensional D3 Force Simulation / Vasco Asturiano | Observable
1.2.9. Three.js
properties
ID: e0c38219-7b90-4981-a46f-d3fe92888996CREATED: <2025-03-13 Thu 20:31>
1.2.10. React
properties
ID: 05a83166-2afc-41b2-8b64-9fcb2a33a5d8CREATED: <2025-03-04 Tue 19:27>
- Next.js
properties
ID: ccbf8bb8-4195-4e6a-8a72-87a7fed916b1
CREATED: <2025-03-04 Tue 19:27>
1.2.11. Feature.js
properties
ID: fdf7f4ee-049d-4050-ac28-501726b0e2a5CREATED: <2025-09-21 Sun 18:18>
1.2.12. Modernizr
properties
ID: 53ba1f16-8e99-427f-8456-fce832f57e1cCREATED: <2025-09-21 Sun 18:18>
1.3. Utils
properties
ID: 103a7228-964b-4075-98e1-1e3ca730dc52CREATED: <2025-10-12 Sun 22:30>
1.3.1. Uglify
properties
ID: f2570e7e-b15d-4e75-9ae9-a12e581cb510CREATED: <2025-10-12 Sun 22:30>
1.3.2. Minify
properties
ID: 161d575a-30e7-466c-bff8-df5d05b21d8aCREATED: <2025-10-12 Sun 22:43>
1.4. TypeScript  ts
properties
ID: 58d76125-7110-4c76-b8d4-7014d407cc1dCREATED: <2025-03-03 Mon 19:45>