Skip to content
Chromatic Coherence

Hue knows · Priority two

JavaScript, indexed by the behaviour rather than the syntax.

Scope, coercion, prototypes and the event loop — the parts of the language that decide what your code actually does — beside the operations that exercise them. You declare where you are standing, and the rows around you come back.

What a Hue Model is

The model holds the domain; your org holds its own light on it.

A Hue Model is the world model of a domain — its rows, the positions they stand in, the two sides they fall on, and, where the domain has one, the source of truth that settles a row. There are no people in it. It is a model of the world, not of anyone in it, and it has no cutoff — only a last-visited state. You stand somewhere in it and it answers by position.

Stand somewhere, and the rows come to you

You copy a position out of the chamber's own map and send it back. No words are matched and nothing is guessed on your behalf — the door reads structure the index already carries, and answers with the neighbourhood you are standing in.

The rows below arrived with no search term at all, by position alone.

SCOPE AND CLOSURESDeclarations & Hoisting

placed
8
observed
0
unobserved
8
reached
8

the room you named

hoisting

declarations lifted to the top of scope

feature

temporal dead zone

let/const pre-init access error region

feature

var

function-scoped, hoisted declaration

feature

let

block-scoped declaration

feature

const

block-scoped immutable binding

feature

the rest of its floor

closure

a function plus its captured lexical environment

feature

lexical scope

scope fixed by source position

feature

captured binding

the variable binding a closure holds

feature

COERCION AND EQUALITY

placed
7
observed
0
unobserved
7
reached
7

the rest of its floor

type coercion

implicit type conversion

feature

strict equality

=== identity without coercion

feature

loose equality

== with abstract coercion

feature

NaN

not-a-number, unequal to itself

feature

truthy

values coercing to true

feature

falsy

values coercing to false

feature

nullish coalescing

?? defaulting only null/undefined

feature

A position the chamber does not hold comes back as a question

NOT A REAL ROOMUNKNOWN_CATEGORY

19 rooms

The door never substitutes a nearby name. An unknown position returns the map instead, so the next thing you send is a place that exists rather than a guess that looked close.

Every row arrives already knowing its state

The reading is not a ranked list. Each row comes back in one of three states, and the state is the useful part — it tells you whether to build on the row, to go and look, or to honour it before you do either.

Zero point

The contract the work must implement. It is present whether or not anyone went looking for it, and it constrains the answer rather than decorating it.

Observed

Rows your org has already returned on. A lit row carries your org's reading as well as the chamber's.

Unobserved

Reached, and your organisation has not returned on it yet. This is the invitation, and it is where a return is worth the most — every one of them is a row you can light.

Two sides, and an ask lands on one of them

JavaScript is indexed as how the language behaves and as what you do with that behaviour. The two sides never share a room: COERCION AND EQUALITY is why == does what it does, and EQUALITY AND COERCION OPERATIONS is the comparison you are about to write.

The behaviour

  • SCOPE AND CLOSURES8
  • COERCION AND EQUALITY7
  • EVENT LOOP AND SCHEDULING5
  • PROTOTYPES AND INHERITANCE5
  • ASYNC AND PROMISES4
  • VALUES AND MODULES4
  • NUMERIC PRECISION3
  • THIS BINDING3
  • SPREAD AND DESTRUCTURING2
  • PROMISES1

The operations

CLOSURE OPERATIONS

3

EQUALITY AND COERCION OPERATIONS

3

EVENT LOOP OPERATIONS

3

PROTOTYPE OPERATIONS

3

THIS BINDING OPERATIONS

3

ASYNC OPERATIONS

2

COPYING AND DESTRUCTURING

2

NUMERIC OPERATIONS

2

MODULE OPERATIONS

1

Most JavaScript surprises are not syntax errors. They are the language behaving exactly as specified in a room you were not standing in — which is why this chamber is cut by behaviour.

Seat levels

A Hue Models seat opens every Hue Model — the domains here today, and the ones that follow them.

Seat

One person working in an org

£19/seat/mo

5,000 units per seat, per month

Ask for a place
Most orgs start here

Org

An org putting real work through it

£29/seat/mo

25,000 units per seat, per month

Ask for a place

Team

An org that leans on it daily

£79/seat/mo

100,000 units per seat, per month

Ask for a place

House

Arranged, not bought

Custom

100,000+ units, a named contact

Talk to us

Per seat, per month, pooled across the org — so one busy week never costs a quiet colleague their work. Lighting a row — returning what you observed — is the Observer's Index.

Before you compare two models

A hue identifies a row within a model, and never across them.

Bands are allocated per model and some overlap, so one hue can appear in more than one model. Each model is its own coordinate system, so two rows sharing a hue in different models are not related.