网站建设售后服务承诺函,如何做app平台,wordpress font google,企业如何进行搜索引擎优化前言:
问题是这样的,在浏览器中看到这段代码 然后在控制台进行输出.得到: 紧接着,就在,js文件里面进行转译: 可是,得到的结果是: 这是问题!!!
正题:
为什么相同的js代码,在 .js 文件中的输出与 Chrome 控制台中的输出不一样? 环境差异#xff1a;不同的JavaScript环境不同的JavaScript环境如 Node.js 和各种浏览器的JavaScript引擎可能会以不同的方式实现和展示相同的JavaScript对象。例如Node.js和 Chrome 控制台对Buffer对象的输出格式有所不同。 控制台实现Chrome的控制台和PyCharm的控制台可能会以不同的方式序列化和显示对象。 全局变量/函数的覆盖在浏览器中全局变量或函数有可能被页面上的其他脚本覆盖导致行为改变。而在Node.js环境下全局作用域受到限制不容易受到污染。 版本不一致使用的库如crypto模块的版本在不同环境中可能不同有些环境可能还有一些附加的polyfill或者补丁。 代码执行方式在Chrome中直接运行的代码可能接收到不同的上下文环境这依赖于具体如何在控制台执行或者在页面脚本中执行。
而针对我面对的这个问题,Node.js 和 Chrome 控制台在打印表示二进制数据的Buffer对象时使用了不同的格式。Node.js 使用 Buffer ... 格式而Chrome 使用了一个包含type和data属性的对象文字格式。
为了使Node.js的输出与Chrome中的一致我需要手动格式化Node.js中的Buffer对象这样可以使输出与Chrome的控制台输出看起来相同。 如何操作?
function y(e) {const hashBuffer crypto.createHash(md5).update(e).digest();return {type: Buffer,data: Array.from(hashBuffer)}
} //对标y(o)输出结果: 总结:
因此,就需要时刻注意这点!!! 关于md5在不同地方加密的注意点----如果他没有加盐(当然可以直接拿固定值,但是如果他的盐也是动态的,这就需要注意转化的问题了)