【发布时间】:2019-06-14 01:07:00
【问题描述】:
标题说明了我想问的一切。我不明白使用 window 和 const {} 的主要区别是什么。
我都试过了,结果是一样的。你能帮我理解一下吗?
附:我正在使用 Laravel,它正在使用窗口全局变量。一些库使用 const {} 显示方法。
【问题讨论】:
标签: javascript node.js laravel
标题说明了我想问的一切。我不明白使用 window 和 const {} 的主要区别是什么。
我都试过了,结果是一样的。你能帮我理解一下吗?
附:我正在使用 Laravel,它正在使用窗口全局变量。一些库使用 const {} 显示方法。
【问题讨论】:
标签: javascript node.js laravel
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';
这个想法是封装变量,以免在两个地方意外地重新分配相同的变量,因此可能不再需要 window 了。如果您需要一些变量/常量,请将其导入其他文件。 如果你需要在你的环境中向后兼容,你可以使用 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
【讨论】:
不同之处在于window.XXX = require(YYY) 将从require(YYY) 调用返回的对象分配给window 对象上的XXX 变量。但是const {XXX} = require(YYY) 使用destructuring assignment 从require(YYY) 返回的对象中解压缩属性XXX。所以在window 范围内调用const {XXX} = require(YYY) 将等于window.XXX = require(YYY).XXX。现在到问题使用哪个?答案是您在特定情况下需要哪个。
【讨论】:
require(YYY) 返回的整个对象,还是只需要它的一个或几个成员属性。如果你需要XXX 和ZZZ,你可以做const {XXX, ZZZ} = require(YYY)