javascript——数据类型
在内存中,分为栈、堆、代码段、静态区,为了快速处理复杂的代码,在不同的区间储存不同的数据类型。
数据类型分为初始类型与引用类型
初始类型在栈中存储,变量赋值传值不传址,引用类型在堆中存储值,栈中只存储地址,变量赋值传址不传值。对于传址和传值举个例子:
1.初始类型赋值传递:
var num=200; var gert=num; num=300; console.log(gert) //200 //只传值,num值的变化对gert没影响
2.引用类型赋值传递:
var aa=[1,2]; var bb=aa; aa.push(3); console.log(bb);//[1,2,3] //传址不传值,aa的变化对bb有影响
再来说初始数据类型,分为number、string、boolean、undefined、null
1.number:主要包括整数、小数(浮点)、负数、进制(二进制、八进制、十六进制),以0x开头的为十六进制,0开头的为8进制,进制转化采用加权方式
console.log(Number.MAX_VALUE) //js可解析的最大值 console.log(Number.MIN_VALUE)//js可解析的接近0的最小正值
2.string:一般引号引起的都是字符串, 转义字符\n换行 \r回车 \f分页 \t制表符(Tab)
注意:“ ”与‘’ 可以嵌套但不能交叉
3.Boolean:true false (任何数据类型都可被判断为 true false )
4.undefined:默认为undefined的情况
a)一个变量只声明不赋值:var a;console.log(a) //undefined
b)函数中传参,如果形式参数没有被传值,默认为undefined
function aa(a,b){ console.log(a); console.log(b); } aa("我是第一个参数") //“我是第一个参数” undefined
c)数组中某个下标的位置没有被传值,默认为undefined
var arry=[1,2,,4] console.log(arry[2]) //undefined
d)对象中没有某个属性,默认为undefined
function person(){ this.name="zhangsan"; } var obj=new person(); console.log(obj.name); console.log(obj.say); //zhangsan undefined
e)函数中没有定义返回值,默认为undefined
function person(){ var aa="返回值"; return aa; } person(); console.log(person()) //返回值 function person(){ var aa="返回值"; return; } person(); console.log(person()) //undefined
5.null
占位符,是个空对象,可直接清空对象,是对象原型链的终点
(undefined与null的区别:在垃圾回收机制中,null直接清空对象,undefined是js中的内部回收机制进行清除;null是个空对象,类型是Object,undefined是预定义的全局变量)
引用数据类型主要包括函数、数组、对象(数组对象、字符串对象、自定义对象。。。)