02:49
<devsnek>
was it intentional that typeof throws if the reference is in tdz instead of being 'undefined'
02:54
<ljharb>
p sure yes
03:00
<rkirsling>
yeah that doesn't seem like it'd be an oversight
03:01
<devsnek>
i don't think its a bug or anything
03:01
<devsnek>
just sufficiently corner case enough that you never know
08:29
<ystartsev>
in this section of the spec: https://tc39.es/ecma262/#table-37 in the evaluate part -> does transitively mean to maintain relationships across objects?
08:29
<ystartsev>
or is it something else?
17:55
<devsnek>
browser debuggers say that Math.random() has no side effects
17:56
<Bakkot>
that's arguably true
17:56
<devsnek>
yeah i mean
17:56
<devsnek>
it doesn't modify any js state
17:56
<Bakkot>
(it would be a lot more true if it were a CSPRNG)
17:56
<devsnek>
but it is confusing for the preview to show one thing
17:56
<devsnek>
and then hitting enter to show another
17:56
<Bakkot>
`new Date` has the same problem
17:56
<devsnek>
nice catch
17:57
<devsnek>
dates and random are the only two things where that can happen i think
17:57
<Bakkot>
among JS builtins, yeah
17:58
<Bakkot>
https://github.com/google/caja/wiki/SES#no-monkey-patching-primordials
18:04
<devsnek>
Bakkot: https://chromium-review.googlesource.com/c/v8/v8/+/2207805
18:04
<bradleymeck>
ystartsev: my understanding is it is being used to mean a deep ordered graph traversal of all the dependency graph rather than a shallow traversal (in post order in this case, though TLA gets a little bit interesting here). i do know transitive is often used in JS package management terms to describe a nested/implicit dependency
18:05
<devsnek>
yeah i think its being used here like module a -> module b -> module c
18:05
<devsnek>
module a evaluates module c
21:44
<devsnek>
node 14.3.0 is here
21:44
<devsnek>
with --experimental-top-level-await