gpt4 book ai didi

javascript - 动态命名的局部变量,用于加载模块

转载 作者:行者123 更新时间:2023-11-30 08:33:29 24 4
gpt4 key购买 nike

有没有办法用动态名称设置局部变量(即 var x = 1),就像我们可以为对象属性(即 o["prefix:"+ x ])?

例如,我有一个 CommonJS 模块,并将其中的多个组件加载到单独的局部变量中,以便于访问:

var module = require("module") // returns object like {a, b, c}
var a = module.a;
var b = module.b;
var c = module.c;

我希望能够在一行中完成此操作 - 为模块的每个属性设置局部变量。

一种方法是这样的:

Object.assign(local_variable_object, require("module"));

其中 local_variable_object 是一个以键作为变量名的对象。如果我只想导入模块的一部分,我可以对 require() 的结果应用过滤函数。

我意识到我可能会使用 eval,但这会不必要地杀死 V8 优化编译器,因为在优化时应该知道这些变量是什么以及它们是否有效。

最佳答案

在 ES5 中,如果没有 eval 并且在全局范围之外,使用 window[varname] 就无法可靠地执行此操作。

ES2015 模式匹配

ES6 添加 pattern matching到允许你做的语言 destructuring assignments .

示例:

var { a, b, c } = require("module");

等同于您的初始示例(也是 Babel 的 ES2015-destructuring 插件将其转换为 ES5 的方式):

var module = require("module");
var a = module.a;
var b = module.b;
var c = module.c;

原生 ES5 解决方法

ES5 有一个解决方法,即在您的函数中定义您自己的“本地范围”对象,然后像使用普通对象一样使用它。

示例:

function () {
"use strict";
var l = {};
var a = "someletter";
l[a] = "A";
console.log(l.someletter);
}

关于javascript - 动态命名的局部变量,用于加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515810/

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