标题说了我想问的一切。我无法理解使用window和const {}的主要区别是什么。
我都尝试过,结果是一样的。你能帮我理解吗?
P.S。我正在使用Laravel,并且正在使用窗口全局变量。一些库使用const {}显示方法。
答案 0 :(得分:1)
区别在于window.XXX = require(YYY)
将require(YYY)
调用返回的对象分配给XXX
对象上的window
变量。但是const {XXX} = require(YYY)
使用destructuring assignment从XXX
返回的对象中解压缩属性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