# The most modern Javascript I know
a micropost *by [@bwasti](https://twitter.com/bwasti)*
****
Javascript has changed drastically since I first learned it.
I generally love the new (to me) features.
Below is a contrived example of code that uses a bunch of concepts
I *just* learned. I'm not sure any of this is good practice, but here it is:
```javascript
class Thing {
constructor(data) {
this.data_ = data
this.show_thing = true
this.display_loop()
}
async display_loop() {
while (this.show_thing) {
this.display_thing()
await new Promise((resolve) => {
requestAnimationFrame(resolve)
})
}
}
display_thing() {
const canvas = document.querySelector('#output_canvas')
// ...
}
get data() {
return this.data_
}
}
const d = new Float32Array(128)
d.fill(11) // fill with the number 11
let t = new Thing(d)
```
## No Semicolons
Wait what the heck? I'm not complaining, though. I'd often forget to type them and now
I don't need to care. I still do though. Sometimes.
## Classes
Not a bad addition. The prototype stuff was awful.
## Async methods
Ok so I guess I can call these from non-async methods but I just can't await on them.
Are they even guaranteed to be executed?
## Promise creation
Is it just me or is this syntax kinda wonky? I can't offer a better alternative though.
## `requestAnimationFrame`
I *guess* this is better than `setTimeout`, but I have no idea how long it'll be
until the next frame (unless I google it).
## Lambdas
These are great. Mostly because there's no more `this` vs `this` BS to deal with.
I wish anonymous functions worked this way.
## `document.querySelector`
Basically just `$` from JQuery. Dope.
## Getters and setters
Coming from C++ this is natural to me and I enjoy the syntactic sugar and safety they provide.
## `Float32Array`
Performance! As someone who works in machine learning I *love* this.
## `const`
Ok this is a bit weird. The *name* is constant, but not the underlying data.
You can mutate it all you want if it's an object. Bleh.
## `let`
Much better than `var`. I'm glad I can stop using `var`. I am now very pretentious
and judgemental of code that uses `var`.
## Other stuff not shown
There are now a ton of camera, microphone and even gyroscope APIs that can be accessed
directly from Javascript. That's awesome.