javascript typeof 类型转换
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
不发生类型转换的
=== 和!==,比较符两侧必须完全相等才可以
【javascript typeof 类型转换】
推荐阅读
- 事件代理
- 数组常用方法一
- mysql|InnoDB数据页结构
- 接口|axios接口报错-参数类型错误解决
- 带你了解类型系统以及flow和typescript的基本使用
- 史前艺术的审美类型「清央美术」
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法