JS基础——基本数据类型/数据类型之间的转换

JS中的数据类型及详解

js数据类型分类

基本数据类型
String字符串
Number数字
Boolean布尔
Null空值
Undefined 未定义
Symbol 唯一值类型(ES6新增)
引用数据类型(万物皆对象)
Object 普通对象
Array 数组对象
RegExp 正则对象
Date 日期对象
Math 数学函数对象
number数字类型

let n = 10;
n = 10.5;
n = -10;
n = 0;
n = NaN; //=>NaN:not a number 非有效数字
n = Infinity; //=>正/负无穷大 -Infinity [ɪnˈfɪnəti]

string字符串类型

基于单引号、双引号、反引号(TAB上面的撇)
包起来的都是字符串
let str = ‘’;
str = ‘19’;
str = “我爱你”;
str = 我是ES6中新增的模板字符串(``),有助于字符串的拼接;
str = ‘[object Object]’;

boolean布尔类型

true / false
let boo = true;
boo = false;

空 null类型
    let nu = null;
    nu = undefined;
    let un; //=>默认值就是undefined
Sumbol唯一值类型
    每一个Symbol()都是一个唯一值
    let x = Symbol('爱你');
    let y = Symbol('爱你');
    console.log(x == y); //=>false

object普通对象:

大括号包起来,里面有零到多组属性名和属性值(键值对),
这些属性名和属性值可以描述当前对象的特征(键:值,多组
键值对用逗号分隔)
    let obj = {
        name: '珠峰培训',
        age: 10,
        teachers: 30
    };
Array数组对象:

中括号包起来,逗号分隔数组中每一项的值(每一项的值可以是任意类型)
let arr = [10, ‘字符串’, true, null];

RegExp正则对象:

两个斜杠包起来一大堆你看不懂的符号就是正则 O(∩_∩)O哈哈~
let reg = /$[±]?(\d|([0-9]\d+))(.\d+)?^/;

function函数:

function func(x, y) {
let total = x + y;
return total;
}

箭头函数

ES6中的 Array Function 箭头函数
let fn = () => {
};

number类型 数字

• 正数、负数、零、小数
• NaN:not a number 不是一个有效数字
• Infinity:无穷大的值

NaN

NaN不等于NaN,NaN和任何其他值都不相等
isNaN()
用来检测当前这个值是否是非有效数字,如果不是有效数字检测的结果是true,反之为false。
isNaN(0);//->false
isNaN(NaN);//->true
isNaN(‘12’);//->false
//当我们使用isNaN检测时,检测值不是number类型的,浏览器会默认的把值先转化为number类型,再检测
isNaN([]);//->false
isNaN(true);//->false

Numder

Number是JS内置的转换方法,可以把其它数据类型“强制”转换为数字类型。
• 字符串转数字:只要字符串中出现任何一个非有效数字字符,最后的结果都是NaN;空字符串会转为0。
• 把布尔转换为数字:true转换为1 false转换为0
• 把空转换为数字:null转换为0 undefined转换为NaN
• 不能把Symbol类型转换为数字,否则会报错
• 把引用数据类型转换为number,首先需要把引用数据类型转换为字符串(toString),再把字符串转换为number即可。
[]–>’ ’
’ ‘–>0

PL:数字例子

Number(’’) //=> 0
Number(’ ') //=> 0
Number(true) //¬=>1
Number(false) ¬//=>0
Number(null) ¬//=>0
Number(undefined) //=¬>NaN
Number(Symbol(13)); //=>Cannot convert a Symbol value to a number
Number({})//=>NaN
Number({name:‘zhufeng’}) //=>NaN
Number(function func() {});//=>NaN
Number([12]) //=>先转为字符串[12]=¬>‘12’;再转数字 ‘12’=¬>12
Number([12,23]) //=>先转为字符串[12,23]¬=>‘12,23’;再转数字 ‘12,23’=->NaN

parseInt([val], [radix])处理机制

• 【val】必须是字符串,如果不是,也要默认转换为字符串
• 【radix】不设置(或者为0):正常都是按照10进制处理,如果字符串是以‘0X’开始的,默认值是16。有效范围2~36,0(就是10),不在范围内就是NaN。

把其他类型数据值转换为number,和Number方法在处理字符串的时候有所区别。

转换规则:把字符串转换为数字类型;如果处理的值不是字符串,需要先转换为字符串然后在去转换为number类型的。
提取规则:从左到右依次查找有效数字字符(符合【radix】进制的内容),直到遇见非有效数字字符为止(不管后面是否还有,都不找了),把找到的转换为数字。

  1. 如果第一位不是0,就遇到字母就停止解析,并把字母前面的值作为10进制去解析,如果第一个就是字母那么值就是空,空成了NaN,比如:
    parseInt(“a”)>parseInt(“”,10)>NaN
    parseInt(“10a”)>parseInt(“10”)>parseInt(“10”,10)==>10;
  2. 如果第一位是0,且第2位不是x也和上面一样遇到字母就停止解析,并把字母前面的值作为8进制去解析,比如:
    parseInt(“0a”)>parseInt(“0”)>parseInt(“0”,10)>0.
    • PS:这个有点特殊,因为0a被解析成了0,还不具备看做是8进制的结构,下面那个就明显了。
    parseInt(“010a”)>parseInt(“010”)>parseInt(“10”,8)
    >8;
  3. 如果第一位是0,且第2位是x那后面也和上面一样遇到字母就停止解析,并把字母前面的值作
    为16进制去解析,比如:
    parseInt(“0xt”)>parseInt(“”,16)>NaN.
    parseInt(“0x12t”)>parseInt(“12”,16)>18.
parseFloat()

在parseInt()的基础上可以识别小数点
pl:
Number(‘12px’) ¬//=>NaN
parseInt(‘12px’) //=¬>12
parseInt(‘px12’) ¬//=>NaN
parseInt(‘12px13’) ¬//=>12
parseInt(‘12.5px’) ¬//=>12

num.toFixed(n)保留两(n)位小数

let n = 3.1415926;
console.log(n.toFixed(2)); //=>“3.14” 保留两位小数

BigInt

ES6中提供了一个新的数据类型,BigInt:管理超过安全数值的数字
console.log(Number.MAX_SAFE_INTEGER); //=>9007199254740991 最大安全数(JS能够有效识别的最大整数)
console.log(9007199254740992 == 9007199254740993); //=>true 应该是不一样的,但是超过了最大数值,JS无法精准计算

String 字符串

在JS中用 单引号/双引号/反引号 包起来的都是字符串
:单双引号不要混着用
在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义或者换行。
• " 表示 "
• ’ 表示 ’
• \n 表示换行
• \t 制表符
• \ 表示\

var str = 'hello';
// str = 'he'll'o'; 不可以
// str = "he"llo"; 不可以
str = "你说:'你在干嘛'";

str = "我说:\"今天\t天气真不错!\"";
str = "今天\
            天气真不错!";
            
str = "\\\\\\";

把其它数据类型转换为字符串类型

• String([value])
• [value].toString()
普通对象转换为字符串都是 “[object Object]”,数组对象转换为字符串是 “第一项,第二项…”(逗号分隔数组中的每一项)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南笙前端工程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值