js字符串的长度

JavaScript041

js字符串的长度,第1张

字符串的最大长度与js中能表达的【最大安全整数】有关系,这是为什么呢

utf-16相关:

符号位1 指数为11 位位尾数位52 (1+11+52=64)

那应该是2^52-1 才对,但小数点前保留一位规格化后始终是1.***这个不需要存,所以这样就成了2^53-1

我理解是:只要转码后的二进制总长度不超出2^53-1就行,但是不一样的编码方式转码后的二进制长度不相同,所以字符串最大字符长度受字符串编码方式影响

负数求二进制

例:-14

原码->反码->补码

原码0000 1110 (14= 2^3 + 2^2 + 2^1)

反码 1111 0001(按位取反)

补码 1111 0010(反码加一)

小数二进制

例:1.5的二进制1.1,二进制1.1反推回去:1 * 2^0 + 1 * 2^(-1)=1.5

存在报错

javascript是有一定的长度限制的,当数组赋值的字符串过长的时候,就有可能会报错。

解决的办法有:

1. 把数组的赋值分成多个引用,使用拼接来完成;

2. 把超长的字符串分割,分成多个字符串后单独作为数组元素;

3. 将超长字符串写入文件,从文件中读取赋值给数组。

字符串的属性:length =》 代表字符串长度

字符串中,字符的位置也是从0开始,依次递增。

不会修改原字符串,会将拼接好的字符串以返回值的方式返回出来。

可以在字符串中查找指定的字符。

可以查到的的话返回值字符所在的位置。

查不到返回 -1。

如果要查找的字符在字符中存在多个,永远只找一个。

使用方法和 indexOf 一样。

但是 indexOf 是从前往后查找,lastindexOf() 是从后往前查找。

有两个参数。

第一个参数,旧的字符。

第二个参数,新的字符。

不会修改原数组。

会将替换好的数组以返回值的形式返回出来。

如果旧的字符在字符串中不止一个,则替换第一个。

不会改变原数组。

会将转化好的数组以返回值的形式返回出来 。

如果括号中什么都不写;则将整个字符串作为数组的一个元素转化成数组。

如果括号中是空字符串,则将每个字符都作为一个数组的元素转化成数组。

如果括号中写字符,则将这个字符变成逗号(,),并以其隔开数组元素。

如果字符串中没有这个字符,效果相当于什么都不写。

如果目标字符在开头或者结尾,则转成数组后,生成一个空字符串的元素。

split 还有第二个参数:

第二个参数代表转成数组后,所保留的元素的数量。(从以转化好的数组下标为0的元素开始)

有两个参数

第一个参数:起始的位置

第二个参数:截取的数量

不会改变原数组

会将截取到的字符串以返回值的形式返回出来

有两个参数

第一个参数:起始的位置(返回时包括位置所对应的字符)

第二个参数:结束的位置(返回时不包括位置所对应的字符)

不会改变原数组

会将截取到的字符串以返回值的形式返回出来

不会改变原数组

会将转换好的字符串以返回值的形式返回出来

不会改变原数组

会将转换好的字符串以返回值的形式返回出来