javascript数据类型

本文深入讲解JavaScript中的数据类型,包括原始类型(Number、String、Boolean、undefined、null)和引用类型,探讨数据类型的存储方式、使用场景及特性,并介绍数据类型转换的方法。

在这里插入图片描述

一 什么是数据类型

内存中存储不同数据的存储格式


二 JS中2大数据类型–原始类型数据

(一)原始类型含义

值保存在变量本地的数据类型

(二)原始类型分类(5种)

1. Number类型

(1)含义

专门保存数字的类型,不加引号

(2)何时使用

要参加算数计算或比较大小的数据,比如:价钱 年龄

(3)所占空间

64位二进制数保存,数字所占空间和数值大小无关,所有数字都占8字节

1GB=1024MB
1MB=1024KB
1KB=1024bytes
1byte=8Bit

(4)舍入误差

因为计算机中无法精确表示1/10,导致计算机中产生的误差,不可避免!
解决四舍五入-no.toFixed(2) --将n按2位小数四舍五入

/*声明变量,保存总价total: 1.6
	  再声明变量,保存收款金额money:2
	  用程序计算找零change,保存在变量中
	  输出找零
	*/
	var total=1.6;
	var money=2;
	var change=money-total;
	console.log(change)//0.3999999999999999
	console.log(change.toFixed(2));//0.40
	          //将change中的数据,按2位小数四舍五入

2. String类型

(1)含义

专门保存一串字符的序列,必须带引号

(2)何时使用

保存文字时,或保存仅用于显示的数字时
比如:姓名 身份证号 手机号 QQ号

(3)占用空间

JS的程序内存中的字符都是用unicode标识的

  • unicode–对全球主要语言中的每个字符都编一个号
  • 每个字母、标点–占用1字节
  • 每个汉字–占用2字节
    比如:“Hello马里奥”==》占用11个字节
//查找汉字unicode编号
var str="向";
str.charCodeAt(0);//21521

//将unicode号转化为二进制
var n=21521;
n.toString(2);//101010000010001

在这里插入图片描述

(4)重要特点
  • 字符串内容一旦创建,不可改变!
  • 要想改变只能创建新字符串,替换旧字符串
  • 如果参与+运算的值中包含字符串类型数据,+法运算自动变为字符串拼接!
var str1="Hello";
var str2="World";
var str=str1+str2;
console.lo(str);//HelloWorld
var n="2";
var m="3";
var r=n+m;
console.log(r);//"23"
/*笔试题*/
var str="Hello"+"world";
//共创建过几个字符串?3个

3. Boolean类型

(1) 含义

专门保存真/假二选一的类型,只有两个值true/false

(2) 何时使用

如果表示二选一的值时,就用Boolean类型

4. undefined类型

只有一个值undefined

5.null类型

表示不指向任何地址


三 JS中2大数据类型–引用类型数据

(一)引用类型含义

值不保存在变量本地的数据类型


四 数据类型转换(2大类)

(一)隐式转换

1. 隐式转换含义

无需程序员干预,js自动完成的类型转换,var str=String(x);

2.算数计算中的隐式转换

(1)正常算法–>转为number类型

算数计算中,一切类型都隐式转为number类型,再计算
比如:“2”–>2 true/false–>1/0

(2)特殊+运算–>转为字符串

+运算中,只要有一方是字符串,两数据都转为字符串,且+运算变为字符串拼接!

var n1=2,n2=3;
var s1="2",s2="3";
var b1=true,b2=false;
console.log(n1+n2);//5
console.log(n1+s2);//23
console.log(b1+s2);//true3
console.log(s1-b1);//1
console.log(s2-n1);//1
console.log(s2+n2+b1);//33true
console.log(b1+n2+s2);//43
console.log(s1+b1-n2);//NaN

3. 隐式转换,仅影响表达式的运算结果,不影响变量中存储的实际值

(二)强制转换

1. 强制转换含义

程序员通过主动调用专门函数,执行转换

2. 任意类型 to String(2种)

(1)var str=x.toString()

JS中,一切数据都有toString方法

(2)var str=String(x)–>隐式转换的原型
(3)何时使用

程序在需要时,自动调用,很少自己调用

3.任意类型 to Number(2种)

(1)var n=Number(x)–>隐式转换的原型

要求纯数字组成
如 Number(“2true”);//NaN

(2)String to Number
① var n=parseInt(str)–转整数

原理:从str开始位置逐个读取每个字符,直到碰到第一个不是数字的字符时,停止读取,自动忽略开头碰到的空格
例如:parseInt(“2true”);//2

var width="12px";
width+"2px"-->"12px2px"
Number(width)+Number("2px")-->NaN
parseInt(width)+parseInt("2px")-->14
var width="12px";
/*将12px+2px,后再保存回width变量中
		width中的值,必须带单位
*/
width=parseInt(width)+2+"px";
console.log(width);
 var money="$400";
 parseInt(money) //NaN
 parseInt("34.56") //34
                           "34.56"; 34
② var n=parseFloat(str)–转小数

原理和parseInt完全一致!但是parseFloat只认第一个小数点

 parseFloat("34.56") //34.56
  parseFloat("34.56.78") //34.56
 
③ Number(x) vs parseInt(str)
Number(x)parseInt(str)
“12px”NaN12
true1NaN
何时使用任意类型 to NumberString to Number

4.任意类型 to Boolean(1种)

(1) var bool=Boolean(x)–>隐式转换
(2)"" NaN undefined null 0 -->false
(3)其余 --> true

在这里插入图片描述

//Step1: 请用户输入薪资,保存在变量salary中
	var salary=parseFloat(prompt("请输入薪资:"));
	console.log(typeof(salary));
	//Step2: 将salary中薪资+1000
	salary=salary+1000;
	console.log(typeof(salary));
	//Step3: 输出涨薪后的薪资
	/*window.*/alert("涨薪后的薪资是"+salary);

五 API

(一)typeof(x)

专门用于判断x的数据类型,返回数据类型名
typeof(NaN)//number

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值