JS创建私有变量secret无法返回预期值,请问代码问题出在哪里?
问题原因
你代码的核心问题是没有执行返回的闭包函数:secretCode调用后返回的是一个箭头函数,你直接把这个函数赋值给getSecret后打印,输出的只会是函数本身,不会拿到secret的值。
修复方法
把最后一行打印语句修改为执行getSecret函数即可:
console.log(getSecret());
修改后即可输出你预期的This is the secret !!!。
补充说明
- 你用闭包实现私有变量的思路本身是正确的:
secret是secretCode的局部变量,外部作用域无法直接访问,只有返回的闭包函数持有对secret的引用,符合私有变量的设计要求。 - 你注释掉的
console.log(secret)预期输出undefined是符合逻辑的,严格模式下该行代码运行会直接抛出ReferenceError,因为全局作用域下不存在secret变量。
内容的提问来源于stack exchange,提问作者user12979978
相关产品推荐
相关产品推荐

