Когда Object.assign вернет false - PullRequest
0 голосов
/ 06 мая 2019

Следующий код взят из файла index.js в пакете graphql-yoga.

Может ли кто-нибудь объяснить мне, по какому сценарию «Object.assign» вернет false и вызовет вместо этого анонимную функцию, назначаемую переменной?

"use strict";
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};

Мне кажется, что Object.assign всегда будет возвращать true, поскольку "assign" является встроенным методом Object.

var test  = Object.assign;
if(test) console.log("it is true")

результат - «это правда» при выводе на консоль, как и ожидалось

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Object.assign недоступен в ES5, он представлен в ES6. Поэтому я предполагаю, что приведенный выше код написан таким образом, чтобы быть совместимым с ES5.

1 голос
/ 06 мая 2019

Единственный случай был бы, если бы Object.assign не существовало - например, в среде ES5. В этом случае, поскольку вы не будете пытаться вызвать undefined, это не приведет к ошибке и вместо этого перейдет к следующей функции (потому что undefined ложно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...