ES5基本数据类型

数据类型

数据类型

数量类型概述
数据类型实例/分类
数值整数、小数/基本数据类型
字符串文本/基本数据类型
布尔true、false/ 基本数据类型
undefined未定义、不存在/ 特殊值
null空值 /特殊值
对象狭义(object)、数组、函数
typeof 运算符

typeof

instanceof 运算符
Object.prototype.toString

typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
typeof undefined // "undefined"
typeof null // "object"
typeof [] // "object"
typeof f // "function"
function f() {}

null 和 undefined

null和undefined

相等运算符(==)直接报告两者相等

null == number // true

在if语句中,它们都会被自动转为false

if (!null) { console.log(1) }
if (!undefined) { console.log(2)}

null 和 undefined 区别

null是一个表示“空”的对象,转为数值时为0

undefined是一个表示"此处无定义"的原始值,转为数值时为NaN

Number(undefined) // NaN
Number(null) // 0

布尔值

JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true

Boolean('') // false
Boolean(undefined) // false
Boolean(NaN) // false
Boolean(null) // false
Boolean(false) // false
Boolean(0) // false

数值

整数和浮点数

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此

if (1 === 1.0) {
    console.log('1等于1.0')
}
// 1等于1.0

浮点数是不准确的,涉及小数的运算要小心。

0.1 + 0.2 === 0.3  // false

数值范围

Infinity 正向溢出 大于等于了2的1024次方

JavaScript 提供Number对象的MAX_VALUE和MIN_VALUE属性,返回可以表示的具体的最大值和最小值

Number.MAX_VALUE
Number.MIN_VALUE

几个特殊的数值

+0 -0

-0 === +0 // true
0 === -0 // true
0 === +0 // true
(-0).toString() // '0'
(+0).toString() // '0'
// 区别
(1 / +0) === (1 / -0) // false
1 / +0  // +Infinity
1 / -0 // -Infinity

NaN

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合

5 - 'x' // NaN
// 'x' 会在运算中的不到数值
0 / 0 //NaN

NaN 的数据类型

typeof NaN // "number"

NaN 不等于任何值,包括它本身

NaN === NaN // false

数组的indexOf方法内部使用的是严格相等运算符,所以该方法对NaN不成立

Boolean(NaN) // false

与数值相关的全局方法

parseInt()

parseInt 将字符串转为整数

parseInt('123') // 123
parseInt('') // NaN

如果字符串头部有空格,空格会被自动去除

parseInt('  9') // 9

如果parseInt的参数不是字符串,则会先转为字符串再转换。

parseInt(1.23)
parseInt('1.23') // 1

字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分

parseInt('9a') // 9
parseInt('a9') // NaN

parseInt 第二个参数表示进制的转换

parseFloat()

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

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

parseFloat方法会自动过滤字符串前导的空格

parseFloat('314e-2') // 3.14
parseFloat('3.14more non-digit characters') // 3.14
parseFloat('\t\v\r12.34\n ') // 12.34

特别注意的点

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

空字符串会转化为NaN

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

后面总结注意 parseFloat 和 Number在转换中的区别

isNaN()

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

isNaN(NaN) // true

isNaN只对数值有效.如果传入其他值,会被先转成数值.

传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。

注意一点在做这个判断的时候,要注意 遵循的是Number()的转换规则

使用isNaN 最好做一个数据类型的判断

function myIsNaN(value) {
  return typeof value === 'number' && isNaN(value);
}

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

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

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

除了Infinity、-Infinity、NaN和undefined这几个值会返回false,isFinite对于其他的数值都会返回true
字符串

字符串与数组

字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符

let s = 'hello'
s[0] // h
'hello'[1] // e
'hello'[-1] // undefined

只能读取,不可修改

Base64转码

javaScript 原生提供的两个方法

btoa() 任意值转为 Base64 编码

atob() Base64 编码转为原来的值

var str = 'Hello Word'
btoa(str) // "SGVsbG8gV29ybGQh"
atob("SGVsbG8gV29ybGQh") //  'Hello Word'

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

function b64Encode(str) {
  return btoa(encodeURIComponent(str));
}
function b64Decode(str) {
  return decodeURIComponent(atob(str));
}
b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值