开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情
上回说到变量,这篇就接着讲数据类型。
1. 数据类型
JavaScript
是一种弱类型或者说动态语言。代码运行时,变量的数据类型是根据=右边的变量值的数据类型来判断的。
var age = 10;//这是一个数字型
var areYouOk = '是的';//这是一个字符串型
1.1 数据类型分类
1.1.1 简单数据类型
数字型number
var num = 10;//num 数字型
var PI = 3.14;//PI 数字型
1. 八进制 0-7 数字前面+0 表示八进制
var num1 = 010
console.log(num1)
var num2 = 012
console.log(num2)
num1
的值为:8。
num2
的值为:10。
2. 十六进制 0-9 a-f 数字前+0x 表示十六进制
var num3 = 0x10
console.log(num3)
var num4 = 0x12
console.log(num4)
num3
的值为:16。
num4
的值为:18。
数字型范围
数字型的范围在想不起来的时候可以用以下函数查询:
console.log(Number.MAX_VALUE)
console.log(Number.MIN_VALUE)
数字型三个特殊值
数字型中有三个特殊值:
- infinity:代表无穷大,大于任何数。
- -infinity:代表无穷小,小于任何数。
- NaN,not a number,代表一个非数值,表示未定义或不可表示的值。
NaN不能计算,不能比较。
NaN举例:
console.log('ABC'-100)//NaN 非数值,不能减
那如何验证是否是NaN呢?
isNaN() 方法用于判断非数字,并且返回一个值。
- 如果是数字,返回 false
- 如果不是数字返回 true
console.log(isNaN(12))//false
console.log(isNaN('ABC哈哈'))//true
字符型string
- 当嵌套时,可以外双内单,或外单内双
// 外单内双 外双内单
console.log('我是"pink德华"')
console.log("我是'pink德华'")
转义符
也可以用转义符
console.log('我是\'pink德华\'')
显示:我是'pink德华'
字符串长度length
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。
通过字符的length属性可以获取整个字符串的长度。
var str = "你好!";
alert(str.length);
显示字符串长度为3。
字符串拼接 +
- 只要有字符串和其他类型相拼接,最终的结果是字符串。
- 多个字符串之间可以使用
+
进行拼接。- 拼接的方式:字符串 + 任何类型 = 拼接之后得到新字符串。
- 拼接前会把字符串相加的任何类型转换成字符串,再拼接成一个新的字符串。
- 字符串相加
alert('hello' + ' ' + 'world');
显示hello world
。
2. 数值型字符串相加
alert('100' + '100');
显示100100
。
- 数值字符串 + 数值
alert('11' + 12);
显示1112
。
口诀:数值相加,字符相连
拼接字符串快捷方法
口诀:引引加加
在需要拼接的地方先用两个'
单引号断开字符的连接,再用两个+
加号连接起来。
// 利用 + 做拼接
console.log('我是' + 'pink老师')
console.log('我今年年龄是:18岁')
let age = 20
console.log('我今年年龄是:' + age + '岁' )
输入年龄案例:
步骤:
- 用户输入年龄。
- 页面输出 我今年 xx 岁啦,使用“引引加加”。
// 1. 用户输入年龄
// 2. 页面输出 我今年 xx 岁啦
let age = prompt('请输入您的年龄:')
// document.write('我今年' + age + '岁了')
// 引引加加
document.write('我今年' + age + '岁了')
布尔值boolean
- 布尔型 true false
console.log(true)
console.log(false)
显示:true
。
显示:false
。
- 只声明不赋值时 undefined
let age
console.log(age)
显示:undefined
。
- undefined与字符串拼接时
let str = undefined;
consolr.log(str + 'hello');
显示:undefinedhello
。
- undefined与数值相加时
let str = undefined;
consolr.log(str + 1);
显示:NaN
。
- 赋值
null
时 null
let obj = null
console.log(obj)
显示:null
。
- null与字符串拼接时
let str = null;
consolr.log(str + 'hello');
显示:nullhello
。
- null与数值相加时
let str = null;
consolr.log(str + 1);
显示:1
。
检测变量数据类型typeof
// 返回的什么类型 string number Boolean null
console.log(typeof 123)//number
console.log(typeof '123')//string
console.log(typeof true)//boolean
console.log(typeof undefined)//undefined
console.log(typeof null)//object
//prompt取过来的值是 字符型的
var age = prompt('请输入年龄');
console.log(age);
console.log(typeof age);
数据类型转换
- 转换为字符串
//1.把数字型转换为字符串类型 变量.toString()
var num = 10;
var str = num.toString();
// 括号里面如果是2 转换为 二进制
console.log(num.toString(2))
console.log(str);
console.log(typeof str);
//2.String(变量)
console.log(String(num));
//3.利用 + 拼接字符串的方法实现转换效果
str = num + ''
console.log(str);
console.log(typeof str);
- 转换为数字型 重点
// 转换为数字型
var age = prompt('请输入年龄')
// 1.parseInt(变量) 可以把字符型的转换为数字型 得到的是整数型
console.log(parseInt(age))
console.log(parseInt('3.14')) //3 取整
console.log(parseInt('3.99')) //3 取整
console.log(parseInt('120px')) //120 会去掉单位
console.log(parseInt('rem120px')) //NaN 不是数字开头,不进行运算
//2.parseFloat(变量) 可以把字符型的转换为数字型 得到的是浮点型
console.log(parseFloat('3.14'))
console.log(parseFloat('3.99')) //3 取整
console.log(parseFloat('120px')) //120 会去掉单位
console.log(parseFloat('rem120px')) //NaN 不是数字开头,不进行运算
// 3.Number(变量)
var str = '123'
console.log(Number(str))
console.log(Number('12'))
// 4.利用算术运算 - * / 隐式转换
console.log('12'-0)//12
console.log('123'-'12')//111
console.log('12'*1)//12
例1:输入出生年份计算年龄
var nf = prompt('请输入出生年份')//nf是字符型
var age = 2022-nf//age是数字型 - 隐式转换
alert('您的年龄是:' + age)
例2:简单相加
var one = prompt('第一个数')
var two = prompt('第二个数')
// var a = Number(one) + Number(two)
// 或
var a = parseFloat(one) + parseFloat(two)
alert('相加的和为'+a)