JavaScript有五个基本的值类型:number、string、boolean、null和undefined。
除了null和undefined以外,其他三个具有所谓的基本包装对象。可以使用内置构造函数Number()、String()、Boolean()创建包装对象
boolean是JS的6种数据类型(number,string,object,boolean,null,undefined)之一,有且只有两种值:true和false
一、六种数据类型
- number
-
练习:
- var num = 1 * "1";console.log(typeof(num) + " : " + num);---->number : 1
- var num = 1 - "1";console.log(typeof(num) + " : " + num);---->number : 0
- var num = "2" * "1";console.log(typeof(num) + " : " + num);---->number : 2
- var num = 1 * "1";console.log(typeof(num) + " : " + num);---->number : 1
-
- string
- boolean
- undefined
- object:范范的引用值,比如数字、json等等;还有特殊的null,作为历史遗留问题,是用于占位的对象
- function:函数
二、作用
用于查看数据类型的
三、使用方法
- typeof(test)
- typeof test
四、显示类型转换和隐示类型转换
- 显示类型转换
- 分6种类型:
- Number(mix):
- 看起来不是数字的就不能转为数字,比如undefined,'abvc'
- null转为数字为0
- 练习:
- var num = Number('12');console.log(typeof(num) + " : " + num);---->number : 12
- var num = Number(true);console.log(typeof(num) + " : " + num);---->number : 1
- var num = Number(false);console.log(typeof(num) + " : " + num);---->number : 0
- var num = Number(null);console.log(typeof(num) + " : " + num);---->number : 0
- var num = Number(undefined);console.log(typeof(num) + " : " + num);---->number : NAN
- var num = Number('a');console.log(typeof(num) + " : " + num);---->number : NAN
- var num = Number('-12');console.log(typeof(num) + " : " + num);---->number : -12
- var num = Number('12abc');console.log(typeof(num) + " : " + num);---->number : NAN
- parseInt(string, radix):将目标进制radox为基底将string转换为十进制
- 转换为整型,其目的为把里面的东西转换为整型的数Z
- 从数字位开始往后看,看到非数字位截止,然后返回这段数字
- 练习:
- var num = parseInt('12');console.log(typeof(num) + " : " + num);---->number : 12
- var num = parseInt('12.3sdf');console.log(typeof(num) + " : " + num);---->number : 12
- var num = parseInt(true);console.log(typeof(num) + " : " + num);---->number : NAN
- var num = parseInt(false);console.log(typeof(num) + " : " + num);---->number : NAN
- var demo = '100px'; var num = parseInt(demo); console.log(num);---->100
- 练习:
- parseInt(test, radix):将test转化为radix的进制格式,redix取值范围为2-36
- 练习:
- var demo='a'; var num = parseInt(demo, 16); console.log(typeof(num) + ":" + num);--->number : 10
- 练习:
- parseFloat(string)
- 转换为浮点数字
- 从数字位开始往后看,看到包括点的非数字位截止,然后返回这段数字
- 练习:
- var num = parseFloat('12.3sdf');console.log(typeof(num) + " : " + num);---->number : 12.3
- 练习:
- String(mix):致力于将内容转为字符串
- Boolean(mix):致力于将内容转为boolean(true|false)
- 除了以下六个值,其他都是自动转为true:null,undefined,+0,-0,"",NAN
- toString():target.toString(),即某对象将自己转为字符串
- 除了以下两个不能转其他都可以:undefined,nul
- PS:一般转字符串,就直接用+""就可以了
- toString()有个比较好玩的用法:toString(radix),以十进制为基底转换为目标进制
- 练习:
- var demo = 10; var num = demo.toString(8); console.log(num);--->12
- 将二进制的10101010转换为十六进制:
- var demo = 10101010; var num = parseInt(demo,2); var target = num.toString(16);
- 练习:
- Number(mix):
- 分6种类型:
- 隐式类型转换:其转换规则为,调用的也是显示转换的规则
- isNaN(content):
- 判断内容是否为NAN,并且将结果返回回来
- 判断规则是:将content放到Number中,即Number(content)并返回结果, 将结果再和NaN比对,即Number(content)==NaN
- 练习:
- console.log(isNaN(null));--->false
- console.log(isNaN(123));--->false
- console.log(isNaN("NaN"));--->true
- console.log(isNaN(undefined));--->true
- console.log(isNaN('1234abc'));--->true
- ++/-- +/-(一元正负):其隐式类型装换调用的是Number()
- ++/--:对象在调用之前,先调用了Number(content),然后再进行++/--
- var a = '123'; a ++; console.log(a);-->124
- var a = 'abc'; a ++; console.log(typeof(a) + ":" + a);--> number : NaN
- +/-: 对象在调用之前,先调用了Number(content)
- var content = + "abc"; console.log(typeof(content)+ ":" + content); --> number : NaN
- var content = + "123"; console.log(typeof(content)+ ":" + content); --> number : 123
- ++/--:对象在调用之前,先调用了Number(content),然后再进行++/--
- +:其隐式类型装换调用的是String(),当+两侧有一个是字符串时,就会将两个都转换为字符串,作为连接符
- -*/%:其隐式类型装换调用的是Number()
- 练习
- var content = "1" * 1;console.log(typeof(content) + ":" + content);--> number:1;
- var content = "1" - 1;console.log(typeof(content) + ":" + content);--> number:0;
- var content = "1" / 1;console.log(typeof(content) + ":" + content);--> number:1;
- var content = "1" % 1;console.log(typeof(content) + ":" + content);--> number:0;
- var content = "asdf1" * 1;console.log(typeof(content) + ":" + content);--> number:NaN;
- 练习
- && || !
- < > <= >=
- 当比较符两侧有数字类型时,则转换为数字比较
- 当比较符两侧有字符串类型时,则转换为字符串对应的ASIC比较
- == !=
- isNaN(content):
补充:
console.log(a);--->报错:a is not defined
console.log(typeof(a));-->undefined
console.log(typeof(typeof(a)));-->string
不发生类型转换的
=== 和!==,比较符两侧必须完全相等才可以