3 ms·
When you use `console.log` that way it gets `this` set to `null`. When you call `console.log("hello")`, `this` is set to `console`. Your code would work if yo
by nilved 12y ago
When you use `console.log` that way it gets `this` set to `null`. When you call `console.log("hello")`, `this` is set to `console`. Your code would work if you set an explicit `this`.
n.forEach(console.log.bind(console));
I don't think there's any reason for this library to exist after you understand `this` semantics but I may be missing something.
e: was, in fact, missing something. Apologies for the disparaging comment, see replies.
- bevacqua 12y agoThat's one, the other is that many of those functional methods tend to mess with functions that take more than one argument when you want to use the first one, e.g parseInt.
- dyscrete 12y agoWell it's not just about `this` but the arguments to pass to console rather. In this case: n.forEach(console.log.bind(console)); forEach is passing console all of its callback arguments, resulting in logging of keys, values, and array. EDIT: Forgot array
- nilved 12y agoAh, I understand. It reminds me of how the `cut` function could be used in Scheme.
- willyg302 12y agoAdditionally, this will log all the passed arguments (value, index, and array being traversed), which typically isn't what you want: [1, 2, 3].forEach(console.log.bind(console)); > 1 0 [1, 2, 3] > 2 1 [1, 2, 3] > 3 2 [1, 2, 3]
- aaronem 12y agoConvenience, I suppose; I had a few headaches when I first transitioned to Javascript and discovered the odd signatures its collection functions' callbacks are expected to have.