Applying a Function to Null in Javascript

call, javascript

Solution

The first argument for `Function.prototype.call` is the context, which defines the `this` value for the execution context of the invoked function, nothing else.

So basically, you're saying that `this` is referring to `null` (at least, in ES5 strict mode), but since you don't access `this` anyway, it makes no difference.

In non-strict mode, `this` cannot be `null`, so it's replaced with the global object instead.

Problem

Why does the following work: ``` function sum(a,b) { return a + b; } var result = sum.call(null,3,4); // 7 ``` Why is result defined? I am invoking sum as a method of null. But null is not an object and cannot have properties! What is going on?

Original source