【发布时间】:2021-07-16 23:01:03
【问题描述】:
我在 IIFE 中有一个常量变量。这个变量正在被返回,我不知道为什么可以改变它。
我的代码如下所示:
const main = (function(args) {
"use strict";
let window = args.window, document = window.document, location = window.location;
let $ = args.jQuery || null;
const CONSTANTS = {
config: {
appRoot: "http://localhost/development/.../console/",
apiRoot: "http://localhost/development/.../api/"
}
}
return {
CONSTANTS
};
}({ window, jQuery }));
console.log(main.CONSTANTS);
console.log(main.CONSTANTS.config.appRoot = null); /* returns null */
console.log(main.CONSTANTS); /* value of appRoot is null now */
现在,当我打开控制台并输入main.CONSTANTS.config.appRoot = null 时,它只会返回null。我不想改变这个值。难道我做错了什么?我错过了一些太基本的东西吗?
另外,这个main 存储在哪里?它不存储在窗口对象中,因为typeof window.main 返回undefined & typeof main 返回object。
【问题讨论】:
-
将引用声明为“const”并不会使它所指的内容不可变。
-
一个后续问题可能会问为什么您需要对象是不可变的?如果是为了“安全”,那么在客户端执行代码时您永远不会满意。
-
哦,不,这不是为了安全????我实际上在其他一些函数中使用这些,所以我不希望这些值是可编辑的。
标签: javascript iife