六种类型
String 字符串
Number 数值
Boolean 布尔值
Null 空值
undefined 未定义
Object 对象
前五位为基本数据类型,Object为引用数据类型
1、首先来看一下typeof
typeof 运算符返回一个用来表示表达式的数据类型的字符串。
typeof 可以返回的类型为:number、string、boolean、undefined、null、object、function
还有新的symbol(详见MDN)
附上网址
developer.mozilla.org/zh-CN/docs/…
常用返回值
//当前的浏览器为chrome浏览器;
var num = null ;
console.log(typeof num);//object
var num = /s/ ;
console.log(typeof num);//object
var num = "a" ;// "123"
console.log(typeof num);//string
var num = a;
console.log(typeof (num));//报错
var num = 123 ;
console.log(typeof num);//number
var num = NaN;
console.log(typeof num);//number
var num = undefined ;
console.log(typeof num);//undefined
var num;
console.log(typeof num);//undefined
var num =[1,3];
console.log(typeof num);//object
var num = true;
console.log(typeof num);//boolean
var num = new Array();
console.log(typeof num);//object
var num =function(){};
//var num =function;会报错
console.log(typeof num);//function
var num =new Object();
console.log(typeof num);//object
function Kkb(name){
this.name =name;
}
var num = new Kkb();
console.log(typeof num);//object
function Kkb(name){
this.name =name;
}
var num = new Person();
console.log(typeof num.name);//undefined
function Kkb(name){
this.name =name;
}
var num = new Kkb("hello");
//var num = new Person(123);-->number
console.log(typeof num.name);//string
复制代码
2、强制转换
-
就是指将一个数据类型强制转换为其他数据类型
-
类型转换主要指,将其他的数据类型。转换为String、Number、Boolean
-
2.1转换为String
-
- toString()
a、调用被转换数据类型的toString()方法;
b、该方法不会影响原变量,它会将转换结果返回;
c、注意:null和undefined这两个值没有toString()方法,调用会报错
- String()
a、调用String()函数,并将被装换的数据作为参数传递给函数;
b、该方法不会影响原变量,它会将转换结果返回;
c、使用String()函数做强制类型转换时,null和undefined这两个值可以转换为String;
d、对于Number、Boolean实际上就是调用toString()方法;null和undefined,不会调用toString()方法,而是直接转换成“null”、“undefined”;
-
2.2转换为Nuber
-
- Number()
a、如果是纯数字的字符串,直接转换为数字;
b、如果字符串中有非数字的内容或者是undefined,则转换成NaN
c、如果字符串是空串或者空格,则转换成0
d、如果是布尔值;true转换为1,false转换为0;
e、如果是Null,转换为0
- parseInt() / parseFloat()
a、parseInt() 把一个字符串转换为一个整数
b、parseInt()转换规则:从左往右依次读取,把有效的整数内容取出来,遇到第一个非数字 内容就停止读取,如果第一个字符就是非数字则转换为NaN;
c、parseFloat() 把一个字符串转换为一个浮点数,和parseInt()类似,不同的是可以获取有效的一个小数;var a = '111.1111.11' var b = kkb111.11 parseFloat(a) // 111.111 parseFloat(b) // NaN 复制代码
parseInt()或parseFloat(),对非String使用,它会先将其转换为String,然后 再操作;
-
2.3转换为Boolean
-
- Boolean()
a、数字转布尔值,除了0和NaN都是true;
b、字符串转为布尔值,除了空串都是true;
c、null和undefined转换为布尔值,都是false;
d、对象也会转换为true;
var KKB=100;
var KKBS='100';
console.log(typeof KKB); //number
console.log(typeof KKB); //string
console.log(typeof String(KKB)); //string
console.log(typeof Number(KKBS)); //number
复制代码
3、隐式转换
1、转换为String
算法运算符(+), 任何值和字符串做 + 时,都会先转换为字符串,然后再和字符串做拼串操作;多个值 + 时 ,从左向右运算,注意数值类型;
可以利用这一特点,来将任意数据类型转换为String,只需(任意字符串 + “”)即可转换为String;这是一种隐式类型转换,由浏览器自动完成,实际上也是调用了String()函数;
2、转换为Number
算法运算符(- * / %),任何值做 – * /,都会将其转换为Number,再做运算;可以利用这一特点,来将任意数据类型转换为Number,只需(任意字符串 – 0)(任意字符串 * 1)(任意字符串 / 1)即可转换为Number,这是一种隐式类型转换,由浏览器自动完成,实际上也是调用了Number()函数;
一元运算符(+(正号) ),对于非Number类型的值,它会先转换为Number,然后再运算;可以对一个其他数据类型使用+,来将其装换为number,隐式类型转换,它的原理和Number()函数一样;
3、转换为Boolean
逻辑计算符(!非),! 对一个布尔值做取反运算;如果对非布尔值取反,则会将其转换为布尔值,再取反;可以利用其特点,将其他数据类型取两次反,转换为布尔值;原理和Boolean()一样;
4、字符串加数字,数字就会转成字符串。
5、数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。
6、乘,除,大于,小于跟减的转换也是一样。
```
console.log(1+'2') //12 string
console.log(1-'2')//-1 number
console.log(10-'kkb') //NaN
console.log(10-'10a') //NaN
console.log(10*'20') //200 number
console.log('10'*'20') //200 number
console.log(2/'1') //2 number
console.log('2'/'1') //2 number
console.log('2'/'kkb') //NaN
```
复制代码
7、 ==时候也会进行隐式转换()
a.undefined等于null
b.字符串和数字比较时,字符串转数字
c.数字为布尔比较时,布尔转数字
d.字符串和布尔比较时,两者转数字
```
console.log(undefined==null) //true
console.log('0'==0) //true 字符串转数字
console.log(0==false) //true 布尔转数字
console.log('0'==false) //2个都转成数字
console.log(null==false) //false
console.log(undefined==false)//false
```
复制代码
好啦,就先到这里吧,分享是一种美德,嘿嘿!