如何把一堆 js 执行结果封装成一个 json 给外界访问?
首先在 index.html 定义了两个 js 文件的加载顺序
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script src="before.js"></script>
<script src="end.js"></script>
</body>
</html>两个 js 细节如下
before.js
const a = 1;
const b = a + 1;
const c = {
a: a,
b: b
};end.js
console.log(c); // { a: 1, b: 2 }需求
- 在 before.js 执行完毕后只保留对象 c
- a, b 销毁, 也就是说这两个对象不要被 end.js 访问到
尝试过的方法
方法一. 使用匿名函数
before.js
(function() {
const a = 1;
const b = a + 1;
const c = {
a: a,
b: b
};
})();失败 : 因为这只是一个方法体结束后全部都没了所以在 end.js 中就报错 Uncaught ReferenceError: c is not defined如果我想让这个函数执行完毕后返回一个c, 给 end.js 访问, 这种写法支持吗? 试了一下
before.js
(function() {
const a = 1;
const b = a + 1;
const c = {
a: a,
b: b
};
return c;
})();还是不行, 在 end.js 中获取不到 c
方法二. 直接定义成一个对象, 也就数说让 before.js 里面只有一个 const c, 并将所有细节都放到 c 中
before.js
const c = {
a: ,
b:
}这样写在 end.js 中确实只能访问 c 了, 但是 before.js 中就有问题了给 c.b 赋值需要用到 c.a, 而这个时候 c.a 不存在, 那就赋值不了不能把 a 定义在外面, 因为需求是 before.js 执行完毕后只保留一个 c 给外界访问应该如何实现呢?
回复
1个回答
test
2024-07-14
闭包。
const fn = () => {
const a = 1;
const b = 2;
return a+b;
}
let c = fn();回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容