window.XXX = require(YYY)VS const {XXX} = require(YYY):使用哪个?

时间:2019-01-20 12:32:26

标签: javascript node.js laravel

标题说了我想问的一切。我无法理解使用window和const {}的主要区别是什么。

我都尝试过,结果是一样的。你能帮我理解吗?

P.S。我正在使用Laravel,并且正在使用窗口全局变量。一些库使用const {}显示方法。

2 个答案:

答案 0 :(得分:1)

区别在于window.XXX = require(YYY)require(YYY)调用返回的对象分配给XXX对象上的window变量。但是const {XXX} = require(YYY)使用destructuring assignmentXXX返回的对象中解压缩属性require(YYY)。因此,在const {XXX} = require(YYY)范围内调用window将等于window.XXX = require(YYY).XXX。现在,问题使用哪个?答案是在特定情况下您需要使用哪个。

答案 1 :(得分:0)

require可能是旧方法-取决于您的环境。

const foo = require('bar');
//is almost the same as
imrport foo from 'bar';

导入方法具有更多的可能性,例如:

//file foo.js
export const myStr = 'lol';
export default (x)=>x**4;
export * as lol from './someFile';

其他文件:

import {myStr, lol}, defaultExported from './foo';

这个想法是封装变量,以防止在两个地方意外地重新分配相同的变量,因此可能不再需要窗口。如果需要一些变量/常量,可以将其导入其他文件。 如果您需要在环境中向后兼容,请使用babel(这是在线版本)https://babeljs.io/repl/ 您知道laravel,所以请注意JavaScript const中的一些差异:

const foo = 1;
foo = 2; //error
const arr = [1];
arr[0]++; //[2]
arr[1] = 'lol'; //no error
const obj = {};
obj.lol = 'man'; //it works