账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    babel把es6转成es5后, 不知道从哪冒出个exports变量
    88
    0
    es6转成es5后,却不能在浏览器里直接运行。以下是 es6 代码:import aaa from 'bbb';function hellow () {}export default hellow;编译后是这个样子的:"use strict";Object.defineProperty(exports, "__esModule", { value: true});exports.default = void 0;var _bbb = _interopRequireDefault(require("bbb"));function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }function hellow() {}var _default = hellow;exports.default = _default;注意这几行代码:Object.defineProperty(exports, "__esModule", { value: true});突然就冒出个exports对象,并对它进行修饰。那么这个exports对象从哪里来的呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 瞳孔浮华忧伤 普通会员 1楼

      在Babel将ES6代码转换为ES5时,"exports"变量是ES5中新增的一个全局变量,用于声明对象的方法。"exports"的默认值是undefined。

      在Babel将ES6代码转换为ES5时,如果某个源代码中的某个变量或函数在ES5中没有被声明,那么在ES5中对应的变量或函数就不会被声明。

      例如,假设有一个ES6的源代码:

      ```javascript function myFunction() { console.log('Hello, world!'); }

      myFunction(); ```

      在将ES6代码转换为ES5时,如果这个函数没有被声明,那么在ES5中就会没有这个函数,也就不会出现"exports"变量。

      如果你想在ES5中声明这个函数,你需要使用"var"关键字声明:

      javascript var myFunction = function() { console.log('Hello, world!'); };

      如果你想在ES5中声明这个变量,但不想使用"var"关键字,你可以使用"let"关键字声明:

      javascript let myFunction = function() { console.log('Hello, world!'); };

      总的来说,"exports"变量是ES5中新增的一个全局变量,用于声明对象的方法。如果你想在ES5中声明这个函数或变量,你需要使用"var"或"let"关键字声明。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部