所以字母a
在十进制中是97
,在十六进制中是61
,在八进制中是141
。你可以在 JavaScript 中这样写:
var octal = [ '\141', '\141', '\141' ]
var hex = [ '\x61', '\x61', '\x61' ]
var ascii = [ 'a', 'a', 'a' ]
它们都会产生相同的结果:
console.log(octal) //=> ["a", "a", "a"]
console.log(hex) //=> ["a", "a", "a"]
console.log(ascii) //=> ["a", "a", "a"]
但是,我想知道的第一部分是,它们实际上是不同数量的 ASCII 字符定义:
'\141' (4)
'\x61' (4)
'a' (1)
我想知道如果您以八进制或十六进制定义一个大文本 block ,它实际上会占用文件中 4 倍的空间量。因此,如果您从 /api/resources.json
以八进制形式返回 JSON 响应,则响应大小将是返回 ASCII 时的 4 倍。也就是说,对此的回应:
'\141\141\141\141\141\141\141\141\141\141\141\141....'
与对此的回应:
'aaaaaaaaaaa....'
所以我不确定它是否真的使文件大小/响应大小更大(可能是一个愚蠢的问题,但这个 encoding stuff 很困难)。只是想确保,是的,它会占用更多空间,因为看起来就是这样。所以基本上,在 JavaScript 文件中写入“原始十六进制/八进制”会导致它变得比 ASCII 更大。
最佳答案
js
文件存储文本,写得越多,文件大小就越大。
这对于编译语言来说不是问题,因为源代码的目的是生成语法语义合理化的其他语言(中间语言、字节码等)。
为浏览器编写的 javascript
文件在分发之前不会进行编译,因此文件大小可能是性能方面需要考虑的一个因素。
所以这实际上取决于你编写 javascript
的目的......
如果您是为 NodeJs
运行时环境编写它,则性能差异可以忽略不计。
如果您从网络服务器提供 js
文件,并使用十六进制字符表示法定义大字符串,则可以稍微减少加载时间。
关于javascript - JavaScript 文件中八进制/十六进制与 ascii 占用的空间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005949/