码迷,mamicode.com
首页 > 其他好文 > 详细

数据类型

时间:2020-07-05 19:26:01      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:not   enum   width   code   原型   参与   lock   范围   rop   

typeof 操作符

1. 可能得到的结果

"undefined" 如果这个值未定义
boolean 如果这个值是布尔值
string 如果这个值是字符串
number 如果这个值是数值
object 如果这个值是null或者对象
function 如果这个值是函数

2. take care

调用 typeof null 会返回 object,因为特殊值null被认为是一个空的对象引用

undefined 类型

  • undefined 类型只有一个值,即特殊的 undefined
  • 声明了变量但未对其初始化,这个变量的值就是 undefined

技术图片

  • 包含undefined值的变量与尚未定义的变量不同,调用尚未定义的变量会报错

技术图片

  • 对未初始化的变量执行typeof操作符会返回 undefined 值,对未声明的变量执行typeof 操作符同样也会返回 undefined值

技术图片

  • 建议:显式地初始化变量,这样,用typeof操作符返回“undefined”值时可以知道被检测的变量还没被声明,而不是尚未初始化
  • 注意

技术图片

Null 类型

  • Null 类型时第二个只有一个值的数据类型
  • 从逻辑上看,null表示一个空对象指针,这也是typeof操作符检测null值时会返回“object”的原因
  • 如果定义的变量准备将来用户保存对象,那么最好将该变量初始化为null而不是其他值

Boolean 类型

  • 只有两个字面值,true 和 false
  • Boolean() 函数转换表
    技术图片

Number 类型

1. 浮点数值

  • 由于保存浮点数值需要的内容空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值
let floatNum1 = 1.; // 解析为1
let floatNum2 = 10.0; // 解析为10
  • 用e表示法表示的数值等于e前面的数值乘以10的指数次幂
  • 浮点数值的最高精度是17位,在算术计算时精确度不如整数(eg:0.1加0.2的结果不是0.3,如下所示)

技术图片

2. 数值范围

  • 由于内存限制,ECMAScript 能表示的最小数值保存在Number.MIN_VALUE中(5e-324),能表示的最大数值保存在Number.MAX_VALUE中(1.7976931348623157e+308)

技术图片

  • 如果超出数值范围,如果是负数,则会被转换成 -Infinity(负无穷),如果是正数,则会被转换为 Infinity(正无穷)
  • 如果某次计算返回了正或负的Infinity值,那么该值将无法参与下一次的计算
  • isFinite() 可以用来确定一个数值是否有穷(在参数位于最小与最大数值之间会返回true)

3.NaN

NaN,即非数值(Not a Number),是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样子就不会抛出错误)

  • 在任何涉及NaN的操作都会返回NaN
  • NaN与任何值都不相等,包括NaN本身

技术图片

  • **isNaN() **接受一个参数,判断是否是NaN,如果是NaN 返回true(不能被转换为数值的值都会导致这个函数返回true)
console.log(isNaN(NaN)); // true
console.log(isNaN(10)); // false
console.log(isNaN(‘10‘)); // false
console.log(isNaN(‘blue‘)); // true (不能被转换为数值)
console.log(isNaN(true)); // false (可以被转换为数值1)

4. 数值转换

  • Number():用于任何数据类型
转换规则:
(1) Boolean值:true-->1,false-->0
(2) 数字值:返回该数字值
(3) null值:返回0
(4) undefined值:返回NaN
(5) 字符串,遵守以下规则
a.如果字符串中只包含数字,则将其转换为十进制数值
b.如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值(会忽略前导0)
c.如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值
d.如果字符串是空,则将其转换为0
e.如果字符串中包含除上述格式之外的字符,则将其转换为NaN

技术图片

  • parseInt()、parseFloat():专门用于把字符串转换成数值

(1)使用parseInt()解析八进制字面量的字符串时,ECMAScript3和ECMAScript5存在分歧,因此建议明确指定基数

let num = parseInt(‘070‘); //ECMAScript3认为是56(八进制),而ECMAScript5认为是70(十进制)

技术图片
(2)parseFloat() 只解析十进制值,因此它没有用第二个参数来指定基数的用法
技术图片

String 类型

1. 字符串的特点

ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

2. 转换为字符串

  • 把一个值转换为一个字符串有两种方式:

(1)toString()方法( null 和 undefined 没有此方法)
技术图片技术图片
(2)String()方法(能够将任何类型的值转换为字符串)

规则:
(1)如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果
(2)如果值是null,则返回"null"
(3)如果值是undefined,则返回"undefined"

技术图片

Object 类型

ECMAScript 中的对象其实就是一组数据和功能的集合

Object的属性和方法:
(1) constructor():保存着用于创建当前对象的函数
(2) hasOwnProperty():用于检查给定的属性再当前对象实例中是否存在
(3) isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型
(4) propertyIsEnumerable(propertyName):用来检查给定的属性是否可以用for-in语句来枚举
(5) toLocalString():返回对象的字符串表示,该字符串与执行环境的地区对应
(6) toString():返回对象的字符串表示
(7) valueOf():返回对象的字符串、数值和布尔值表示。通常与toString()方法的返回值相同

数据类型

标签:not   enum   width   code   原型   参与   lock   范围   rop   

原文地址:https://www.cnblogs.com/let423/p/13247121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!