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