js中的基本数据类型
六种基本数据类型,包括Number,String,Boolean,Undefined,Null。还有一种复杂数据类型(object);
typeof 操作符
js中提供一种检测当前变量数据类型的方法(typeof);
typeof 123 //Number
typeof "shenqixiaomin" //String
typeof true //Boolean
typeof undefined //Undefined
typeof null //object
typeof {} //object
typeof [] //object
typeof console.log() //Function
null类型其实是一种空对象。
1.Number类型
Number类型包含整数和浮点数两种值。
NaN:非数字类型。特点:1、涉及到的任何关于NaN的操作,都会返回NaN 2、NaN不等于自身。
isNaN():检测参数是否是非数字类型。
isNaN(123) //false
isNaN("shenqixiaomin") //true
2.String类型
字符串转换:
String():适用于任何数据类型;
toString():null,undefined不能用,其他都能用。
3.Boolean类型
这个类型只有两个值:true和false。下表是各种数据类型转成boolean类型的规则:
数据类型 | 转换成true | 转换成false |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非0数值(包括无穷大) | 0和NaN |
Object | 任何非空对象 | null |
Undefined | 不适用 | undefined |
4.undefined类型
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
5.Null类型
null类型被看做空对象指针
6.Object类型
js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
三大引用类型
1.Object类型
Object的实例有两种创建方式:
1.使用new操作符后Object构造函数:
var person=new Object();
person.name="shenqixiaomin";
person.age=26;
2.字面量表示:
var person={
name:"shenqixiaomin",
age:26
}
2.Array类型
也有两种创建方式
1.构造函数
var colors=new Array("red","yellow","blue")
;
2.字面量
var colors=["red","yellow","blue"]
;
3.Function类型
function sum(num1,num2){
return num1+num2
}
js按照存储方式分为值类型和引用类型。那它们有什么区别呢
看下面代码
var a=100;
var b=a;
a=200;
console.log(b); //100
简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。
此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,
这两个变量可以参加任何操作而相互不受影响。也就是说基本类型在赋值操作后,两个变量是相互不受影响的。
var person={
name:"shenqixiaomin"
}
var someBody=person;
person.name="who";
console.log(someBody.name); //who
引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。
这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,
两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。
因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。