gpt4 book ai didi

javascript - 获取 ES6 中值的类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:57 24 4
gpt4 key购买 nike

我正在使用带有 ["iife-wrap"] 插件的 ES6 + babel。

我正在尝试重新制作我之前创建的插件(表单验证)。我正在尝试检查数据是否是一个对象。

对于 es5 这只是:typeof blah === 'object'string, function, and etc.

但是如果我把它放在 es6 上。它将产生错误 Uncaught TypeError: _typeof is not a function

这是我的代码示例。

let es6function = () => {
return 'asd';
}

console.log(typeof es6function)

class Person {

}

let tryThis = new Person()
console.log(tryThis instanceof Person)

ES5:后编译

;

(function () {
'use strict';

function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}

var _typeof = typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === 'undefined' ? 'undefined' : _typeof(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof(obj);
};

var es6function = function es6function() {
return 'asd';
};

console.log(typeof es6function === 'undefined' ? 'undefined' : _typeof(es6function));

var Person = function Person() {
_classCallCheck(this, Person);
};

var tryThis = new Person();
console.log(tryThis instanceof Person);
})();

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

看起来您不小心在两次遍历您的代码时运行了 Babel。

ES6代码

console.log(typeof es6function)

确实被转译为

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };

console.log(typeof es6function === 'undefined' ? 'undefined' : _typeof(es6function));

变成了

var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };

var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === "undefined" ? "undefined" : _typeof2(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(obj);
};

console.log(typeof es6function === 'undefined' ? 'undefined' : _typeof(es6function));

当你再次转译它时。除了 _typeof/_typeof2 重复之外,这看起来很像您的转译结果。检查你的构建配置和 babel 插件。尝试一个接一个地禁用以查看问题何时会消失,并向负责的组件报告错误。

关于javascript - 获取 ES6 中值的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39803281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com