Applying a Function to Null in Javascript

后端 未结 5 1463
误落风尘
误落风尘 2020-12-03 09:13

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 invo

5条回答
  •  孤街浪徒
    2020-12-03 09:38

    When you use .call or .apply with null or undefined, the default this (usually window) is automatically used instead if not in strict mode.

    From MDN (emphasis mine):

    thisArg
    The value of this provided for the call to fun. Note that this may not be the actual value seen by the method: if the method is a function in non-strict mode code, null and undefined will be replaced with the global object, and primitive values will be boxed.

    If you are in strict mode, it actually will be null or undefined.

    (function() {
        'use strict';
    
        return this;
    }).call(null); // null
    
    (function() {
        'use strict';
    
        return this;
    })(); // undefined
    

提交回复
热议问题