4 ms·
Number 2 is cheating IMHO: it is invoking console.log just like 1, just wrapped in an immediately invoked closure. You can keep playing this game ad infinitum:
by fred256 9y ago
Number 2 is cheating IMHO: it is invoking console.log just like 1, just wrapped in an immediately invoked closure. You can keep playing this game ad infinitum:
(_ => (_ => console.log("2a"))()()
(_ => (_ => (_ => console.log("2b"))))()()()
- kmill 9y agoI wasn't reading carefully, and I thought they mentioned it because it's slightly different from (function () { console.log("#"); })(); though not actually since the this is not being used. I was expecting to see console.log.bind(console)("#") as well. Edit: bind is farther down in the comments.
- jmull 9y agobind is a way to create a function, not invoke one. Here you're invoking the function (that bind returned) in the normal way, using parenthesis.
- kmill 9y agoThe list seems to be about different ways a particular function could be called, rather than just the syntax of invocation. Imagine you are making a code analysis program and you want to find all the places console.log is called; I imagined the bind example as encompassing things like var log = console.log.bind(console); // ... ... ... log("#");
- jmull 9y agoOk: static analysis of a language where most fundamental relationships are resolved at runtime. I guess this is one way to express the futility. The lesson learned is hook console.log -- or whatever function you are interested in -- meaning, replace it with something that captures the context in which it is called and passes through the call to the original)
- Stratoscope 9y agoExactly. And if anything is notable about #2, then these must be notable too: ( function() { console.log("2f") } )() ~function() { console.log("2f") }()