面试题答案
一键面试在JavaScript ES6模块中,可以通过以下方式防止敏感信息暴露:
- 使用
let
和const
声明私有变量:在模块内部声明的变量如果没有通过export
关键字导出,默认是私有的,外部无法访问。
在上述代码中,// module.js const privateSecret = 'this is a secret'; let privateCounter = 0; function incrementPrivateCounter() { privateCounter++; return privateCounter; } export function getSecret() { return 'Secret is hidden'; } export function getCounter() { return incrementPrivateCounter(); }
privateSecret
和privateCounter
没有被export
,外部模块无法直接访问它们。只有通过export
导出的getSecret
和getCounter
函数才能被外部调用,这样敏感信息就不会直接暴露。 - 使用闭包:利用闭包的特性,将敏感信息封装在内部函数中,只对外暴露安全的接口。
这里通过// module.js const createModule = () => { const privateData = { sensitiveInfo: 'confidential data' }; return { getSafeData: () => { return 'Safe data from module'; } }; }; export default createModule();
createModule
函数返回一个对象,对象中的方法可以访问闭包内的privateData
,但外部无法直接访问privateData
中的敏感信息。只有getSafeData
方法暴露给外部使用。