文章目录
一、为什么需要数据类型
在计算机中不同的数据所占用的空间不同
为了便于把教据分成所需内存大小不同的数据
充分利用存储空间
数据类型就是数据的类别型号
变量是属于哪种数据类型?
答:不确定,JS属于弱类型的语言,不需要提前声明变量类型,在运行过程中类型会被自动确定
var num;//不确认类型
var num = 10;//num属于数字类型
var num = '112233';//num属于字符串类型
//JS的变量数据类型是只有在程序运行过程中,更具等号右边的值来确定的
//JS是动态语言 变量的数据类型是可以变化的
var x = 10;//x属于数字类型
x = '112233';//x属于字符串类型
二、简单数据类型(基本数据类型)
1.数字型
1.1.数字型进制
var num = 10;
// 八进制 数字前面加0o(octonary)表示八进制
var num1 = 0o10;
console.log(num1)
// 十六进制 数字前面加0x(hexadecimal)表示八进制
var num2 = 0xa;
console.log(num2)
// 8
// 10
1.2.数字型范围
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
console.log(Number.MIN_VALUE);//5e-324
1.3.数字型三个特殊值
console.log(Infinity);// 无穷大
console.log(-Infinity);// 无穷小
console.log(NaN);// 一个非数值
console.log('发财'-10086);//NaN
1.4.isNaN()方法的使用
// isNaN 这个方法用来判断是否为非数字 是为false 不是则返回true
console.log(isNaN(12));
2.字符串型 String
2.1.字符串型的规范
引号中的任意文本,如:单引号 ’ ’ 和双引号 " "
var Str1 = "Hello world";//双引号
var Str2 = 'Hello world';//单引号
var Str3 = Hello world;//报错
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)
var Str1 = "Hello "world"";//报错
var Str2 = 'Hello 'world'';//报错
var Str3 = 'Hello "world"';//Hello "world"
var Str4 = "Hello 'world'";//Hello 'world'
2.2.字符串转义符
var Str = '是发财不是\n旺财';
console.log(Str)
// 是发财不是
// 旺财
2.2.1字符串案例
alert('酷热难耐,火辣的太阳底下,我挺拔的身姿,成为了最为独特的风景。' +
'\n我审视四周,这里,是我的舞台,我就是天地间的王者。' +
'\n这—刻,我豪气冲天,终于大喊一声:"收破烂啦~"')
2.3.字符串长度
let str ="12345678qwertyu"
console.log(str.length)
//15
2.4.字符串拼接
//只要字符串和其他类型的相拼接,最终结果都是字符串型
//数值相加,字符相连
let str ="发财多大了?"
let str1 = "发财21了"
console.log(str+str1)//发财多大了?发财21了
console.log(str+21)//发财多大了?21
console.log(str+true)//发财多大了?tru
console.log(12+12)//24
console.log("12"+12)//1212
2.4.1案例
交互三要素
1.输入 2.程序处理 3.输出
let age = prompt('请输入您的年龄')//12
var str = '您今年'+age+'岁了'
alert(str)//
3.布尔型(Boolean)
3.1.布尔型的规范
布尔类型常用来进行判断
在参与运算时true当作1来看,false当作0来看
如果布尔类型的值为:0;-0;null;"";false;undefined;NaN 则返回false否则为true
var bol = Boolean(0);
console.log(bol)//fales
3.2.布尔型的运算与拼接
true参与运算当1来看
false参与运算当0来看
let flag = true;// 布尔型 true参与运算当1来看
var flag1 = false;// 布尔型 false参与运算当0来看
console.log(flag+1)// 2
console.log(flag1+1)// 1
4.未定义数据类型(undefined)
1.若声明的变量未赋值,就是undefined 未定义的数据类型
2.未知数据类型和字符串类型相加 结果返回字符串
3.未知数据类型和number类型相加 结果返回不是一个数字
var str;
console.log(str)//undefined
var str1 = undefined;
console.log(str1 +'是发财不是旺财')//undefined是发财不是旺财
console.log(str1+1)//NaN 未知数据类型和number类型相加 结果返回不是一个数字
5.空值(null)
//null 空值
var str1 = null;
console.log(str1 +'是发财不是旺财')//null是发财不是旺财
console.log(str1+1)//1 空值和number类型相加 结果返回number数值
三、获取检测变量数据类型
typeof可用来获取检测变量的数据类型
let num = 10;
console.log(typeof num)//number
let str = '是发财不是旺财';
console.log(typeof str)//String
let flag = true;
console.log(typeof flag)//Boolean
let let1 = undefined;
console.log(typeof let1)//undefined
let let2 = null;
console.log(typeof let2)//object(对象)
//prompt取的值为字符串类型
let age = prompt('请输入您的年龄')
console.log(typeof age)//String
四.数据类型的转换
转换为字符串类型
转换为数字类型
转换为布尔型
1.转换为字符串类型
//1.变量.toString()
let num = 10;
let str = num.toString()
console.log(str)//10
console.log(typeof str)//string
//2.String()
console.log(String(num))//10
console.log(typeof String(num))//string
//3. +拼接字符串 (隐式转换)
let str1 = num+''
console.log(typeof str1)//string
2.转换为数字类型
let age = prompt('请输入您的年龄')//21
// 1.parseInt(变量) 可以把字符型转换为数值型 得到的是整数
console.log(parseInt(age))//21
console.log(typeof parseInt(age))//String
console.log(parseInt('3.14'))//3 向下取整
console.log(parseInt('3.94'))//3 向下取整
console.log(parseInt('120px'))//120 会去除px单位
console.log(parseInt('rem120px'))//NaN 不是一个数字
// 2.parseFloat(变量) 得到的是小数
console.log(parseFloat('3.14'))//3.14
console.log(parseFloat('3.94'))//3.94
console.log(parseFloat('120px'))//120 会去除px单位
console.log(parseFloat('rem120px'))//NaN 不是一个数字
//3.Number(变量)
console.log(Number('123'))//123
//4.隐式转换 利用算数运算 - * /
console.log('12' - 0)//12
console.log('12' - 10)//2
3.转换为布尔型
代表空,否定的值会被转换为false
如:’’,0,NaN,null,undefined
console.log(Boolean(''))//false
console.log(Boolean(0))//false
console.log(Boolean(NaN))//false
console.log(Boolean(null))//false
console.log(Boolean(undefined))//false
console.log('-------------------------------------')
console.log(Boolean('123'))//true
console.log(Boolean('是发财不是旺财'))//true