数据类型——数值&字符串

目录

一.数值(全局方法)

1.parseInt()--返回值要么是整数,要么是NAN

2.parseFloat()

3.isNaN()

4.isFinite()

二.字符串

1.概述

1).定义

2).转义

3).字符串与数组

2.字符集

3.Base64 转码


一.数值(全局方法)

1.parseInt()--返回值要么是整数,要么是NAN

1).parseInt方法用于将字符串转为整数--会将值先转为字符串后再专为十进制整数

如果字符串以0x0X开头,parseInt会将其按照十六进制数解析。

如果字符串以0开头,将其按照10进制解析。

对于那些会自动转为科学计数法的数字,parseInt会将科学计数法的表示方法视为字符串

2).进制转换

parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制。

parseInt('1000', 2) // 8
parseInt('1000', 6) // 216

 JavaScript 不再允许将带有前缀0的数字视为八进制数,而是要求忽略这个0。但是,为了保证兼容性,大部分浏览器并没有部署这一条规定。

2.parseFloat()

1).parseFloat方法用于将一个字符串转为浮点数。

如果字符串符合科学计数法,则会进行相应的转换。

parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14

 如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。

如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN

parseFloat([]) // NaN
parseFloat('FF2') // NaN
parseFloat('') // NaN

这些特点使得parseFloat的转换结果不同于Number函数。

3.isNaN()

1).isNaN方法可以用来判断一个值是否为NaN

isNaN只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true

对于空数组和只有一个数值成员的数组,isNaN返回false,原因是这些数组能被Number函数转成数值

判断NaN更可靠的方法是,利用NaN为唯一不等于自身的值的这个特点,进行判断。

function myIsNaN(value) {
  return value !== value;
}

4.isFinite()

isFinite方法返回一个布尔值,表示某个值是否为正常的数值。

isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(undefined) // false
isFinite(null) // true
isFinite(-1) // true

除了Infinity-InfinityNaNundefined这几个值会返回falseisFinite对于其他的数值都会返回true

二.字符串

1.概述

1).定义

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。

字符串默认只能写在一行内,分成多行将会报错。

如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。

var longString = 'Long \
long \
long \
string';

longString
// "Long long long string"

如果想输出多行字符串,有一种利用多行注释的变通方法。

(function () { /*
line 1
line 2
line 3
*/}).toString().split('\n').slice(1, -1).join('\n')
// "line 1
// line 2
// line 3"

2).转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

需要用反斜杠转义的特殊字符,主要有下面这些。

  • \0 :null(\u0000
  • \b :后退键(\u0008
  • \f :换页符(\u000C
  • \n :换行符(\u000A
  • \r :回车键(\u000D
  • \t :制表符(\u0009
  • \v :垂直制表符(\u000B
  • \' :单引号(\u0027
  • \" :双引号(\u0022
  • \\ :反斜杠(\u005C

上面这些字符前面加上反斜杠,都表示特殊含义

(1)\HHH

反斜杠后面紧跟三个八进制数(000377),代表一个字符。HHH对应该字符的 Unicode 码点,比如\251表示版权符号。显然,这种方法只能输出256种字符。

(2)\xHH

\x后面紧跟两个十六进制数(00FF),代表一个字符。HH对应该字符的 Unicode 码点,比如\xA9表示版权符号。这种方法也只能输出256种字符。

(3)\uXXXX

\u后面紧跟四个十六进制数(0000FFFF),代表一个字符。XXXX对应该字符的 Unicode 码点,比如\u00A9表示版权符号。

如果在非特殊字符前面使用反斜杠,则反斜杠会被省略。

如果字符串的正常内容之中,需要包含反斜杠,则反斜杠前面需要再加一个反斜杠,用来对自身转义。

3).字符串与数组

字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。

如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined

字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。

4).length属性

length属性返回字符串的长度,该属性也是无法改变的。

2.字符集

JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。

 

3.Base64 转码

JavaScript 原生提供两个 Base64 相关的方法。

  • btoa():任意值转为 Base64 编码
  • atob():Base64 编码转为原来的值

这两个方法不适合非 ASCII 码的字符,会报错。

要将非 ASCII 码字符转为 Base64 编码,必须中间插入一个转码环节,再使用这两个方法。

function b64Encode(str) {
  return btoa(encodeURIComponent(str));
}

function b64Decode(str) {
  return decodeURIComponent(atob(str));
}

猜你喜欢

转载自blog.csdn.net/lxlsygxs2017/article/details/113742828