1 javascript有六种数据类型,分别为:数值类型、字符串类型、布尔类型、对象、null和defined,其中对象包括了函数对象、数组对象等。而这六种数据类型中,除了对象,其他五种全是基本数据类型。对于这些类型中的null和defined,它俩之间的区别在于,defined为未初始化的数据类型,而null则为初始化了的类型,它的值即为“null”。
2 不同于其他编程语言,javascript语言中的数据类型都是弱类型,通过var关键字就可以声明一个类型的变量。而与其他编程语言一样,javascript语言中的这些数据类型相互之间也可以进行转换,而它们进行转换的方式则有两种,一种为隐式转换,一种为强制转换。
在隐式转换中,其他数据类型可以转换为布尔类型,如:null——false,defined——false,0——false,NAN——false,“0”——false;除了转换为布尔类型,其他数据类型还可以转换为数值类型,如false——0,true——1,“123”——123,“1king"——NAN;除此之外,其他数据类型还可转换为字符串类型,如:null——”null“,defined——”defined“。
在强制转换中,需要借助Boolean()、String(),Number()等方法来进行强制转换。
特殊的,我们也可以通过+或者-来进行数据类型的转换,如”123“+12=”12312“(+在这里充当了连接字符串的功能)利用这一个特点,我们可以让一个数值加上一个空字符串实现数值到字符串的转换。而又如:”123“-3=120,字符串在这里被当作了数值计算,所以,可以通过让一个字符串减去0来实现字符串到数值的转换。
3 为了检测数据类型,javascript中一共有5种方法来进行检测,它们分别为:
typeOf():返回一个字符串说明检测对象的数据类型,但是若被检测对象不是基本数据类型,则返回Object,特殊的,如果为null返回的也为Object.
instanceOf():返回值为布尔类型,它可以检测一个构造函数是否存在于另一个检测对象的原型链上
Object.prototype.toString():这是最准确和最安全的办法
construct():返回对创建此对象的构造函数的引用。
duck type()