js02

js1—day02—数据类型及Number()

JavaScript的数据类型分类:

  • 原始类型:数字、字符串、布尔值、null(空)、undefined(未定义);存储于栈内存。
  • 引用类型(也称对象类型):原始类型之外的类型,如数组、对象、函数等;存储于堆内存。

typeof 操作符:(typeof是一个操作符而不是函数)

  • “undefined”——如果这个值未定义
  • “boolean”——如果这个值是布尔值
  • “string”——如果这个值是字符串
  • “number”——如果这个值是数值
  • “object”——如果这个值是对象或 null
  • “function”——如果这个值是函数
    ( typeof操作符的操作数可以是变量(message),也可以是数值字面量)
    例子:
    var address;
    console.log(typeof address );

注: 调用 typeof null会返回"object";typeof 的返回值都是String

Undefined类型(Undefined 类型只有一个值,即特殊的 undefined):在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined对于尚未声明过的变量,只能执行一项操作,即使用 typeof 操作符检测其数据类型(对未经声明的变量调用 delete 不会导致错误,但这样做没什么实际意义,而在严格模式下会导致错误)

Null类型(null类型只有一个值,null):(使用 typeof 操作符检测 null 值时会返回"object")
区别:

  • null:(用来描述空值)
  • typeof null:返回的是字符串object,也就是说可以把null看成一个特殊的对象;
    通常来讲我们把null看成他自有类型的唯一成员;
  • undefined:(表明变量没有初始化)
    如果函数没有返回值,则返回undefined;
    typeof undefined:返回的是字符串undefined;
    ==认为NULL和undefined是相等的;===则返回false

Boolean类型(只有两个字面值: true 和 false):字面值 true 和 false 是区分大小写的,True 和 False是标识符

Number类型:
整数数值 、 浮点数值 (浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数)

解决精度问题:

  • 转化成整数进行计算
  • 设定保留的小数位tofixed,实际开发过程中保留 2~3位小数位足够了
  • 转化成整数Math.floor(a)、Math.ceil(a)
  • 频繁需要精确计算,利用第1种方法的思想自定义

运算函数

  • (a. 存储比较–>例如,转化为字符串进行存储;
  • b. 计算情形–>对于整数,前端出现问题的几率比较低,毕竟很少有业务需要需要用到超大整数,只要运算结果不超过 Math.pow(2, 53) 就不会丢失精度。)

NAN

  • NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况

  • 0 除以 0 会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回-Infinity

  • 任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN; NaN 与任何值都不相等,包括 NaN 本身

  • 在基于对象调用 isNaN()函数时,会首先调用对象的 valueOf()方法,然后确定该方法返回的值是否可以转换为数值。
    如果不能,则基于这个返回值再调用 toString()方法,再测试返回值。

  • 转换成数字类型: +(加)、-(减)、*(乘)、/(除),会把类型转换成数字

Number()函数的转换规则

  • 如果是数字值,只是简单的传入和返回。
  • 如果是 Boolean 值, true 和 false 将分别被转换为 1 和 0。
  • 如果是 null 值,返回 0。
  • 如果是 undefined,返回 NaN。
  • 如果是字符串:
    - 字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成 1, “123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了);
    - 如果字符串包含有效的浮点格式,如1.1,则转换为相应浮点数值(同样忽略前导 0)
    - 如果字符串中包含有效的十六进制格式,例如"0xf”,则将其转换为相同大小的十进制整数值;
    - 如果字符串是空的(不包含任何字符),则将其转换为 0;
    - 如果字符串中包含除上述格式之外的字符,则将其转换为 NaN
  • 如果是对象,则调用对象的 valueOf()方法:然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值。

parseInt() 函数:

  • parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN。如果第一个字符是数字字符, parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字。

parseFloat() 函数:

  • 从第一个字符(位置 0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止
  • 如果值有 toString()方法,则调用该方法(没有参数)并返回相应的结果;
    如果值是 null,则返回"null";
    如果值是 undefined,则返回"undefined"

parseInt() 函数与parseFloat() 函数的区别:

  • parseFloat()与 parseInt()的第二个区别在于它始终都会忽略前导的零。

  • 转换为字符串 : 第一种是使用几乎每个值变量都有的 toString()方法(但 null 和 undefined 值没有这个方法)

语法转换–多行字符串: 用反引号 ... 表示
语法转换–模板字符串 : 可以用+号连接

indexOf :
字符串的索引从0开始,
第一个字符的位置是0,
第二个是1,以此类推。
str[2]表示字符串str的第三个字符。

indexOf() 方法: 可返回某个指定的字符串值在字符串中首次出现的位置:
stringObject.indexOf(searchvalue,fromindex)

substring() 方法: 用于提取字符串中介于两个指定下标之间的字:stringObject.substring(start,stop)

Subslice: 接收负数参数,截取顺序–从左往右截取:
slice(start,end)

trim : 从字符串中移除前导空格、尾随空格和行终止符
stringObj.trim();

charAt : 第一个字符位置为 0, 第二个字符位置为 1,以此类推:
string.charAt(index)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值