以下代码来自graphql-yoga软件包中的index.js文件。
有人可以在什么情况下向我解释“ 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")
结果是按预期将“ It true”打印到控制台上
答案 0 :(得分:2)
Object.assign在ES5中不可用,它是在ES6中引入的。因此,我假设上面的代码是以与ES5兼容的方式编写的。
答案 1 :(得分:1)
唯一的情况是Object.assign
不存在-例如在ES5环境中。在那种情况下,因为您不会尝试调用 undefined
,所以不会导致错误,而是会传递给下一个函数(因为undefined
是虚假的。)