1.js数据类型?
基本数据类型:String(字符串)、boolean(布尔值)、Number(数字)、undefined(未定义)、null(空)
引用数据类型:Object(对象)、Array(数组)、Date(时间)、RegExp(正则)、Function(函数)
基本数据类型vs引用数据类型区别?
(1)引用类型值可添加属性和方法,而基本类型值则不可以
//为引用类型值添加属性
var p = new Object();
p.age=11;
alert(p.age);//11
//为基本类型值添加属性
var name = ‘a‘;
name.age = 11;
alert(name.age); //undefined
(2) 在复制变量值时,基本类型会在变量对象上创建一个新值,再复制给新变量。此后,两个变量的任何操作都不会影响到对方;而引用类型是 将存储在变量对象的值复制一份给新变量,但是两个变量的值都指向 存储在堆中的一个对象,也就是说,其实他们引用了同一个对象,改变其中一个变量就会影响到另一个变量。
//引用类型值,以数组为例
//1.对其中一个变量直接赋值不会影响到另一个变量(并未操作引用的对象)
var a = [1,2,3];
var b = a;
a = [1,2,3,4];
alert(a);//1,2,3,4
alert(b); //1,2,3
//2.使用push(操作了引用的对象)
var a = [1,2,3];
var b = a;
a.push(4);
alert(a);//1,2,3,4
alert(b); //1,2,3,4
检测类型:
typeof:确定变量是字符串、数值、布尔值还是undefined的最佳工具。
var num = 1;
var a = ‘a‘;
var b;
var flag = true;
var o = null;
alert(typeof num); //number
alert(typeof a); //字符串
alert(typeof b); //undefined
alert(typeof flag); //boolean
alert(typeof o); //object instanceof : 判断是否某个对象类型var a = [1,2,3]; alert(a instanceof Object); //true alert(a instanceof Array); //true alert(a instanceof RegExp); //false