7.javascript中有几种对象类型?他们之间能否相互转换? JS中有6种数据类型:Undefined、Null、Boolean、Number、String和Object。JS中不支持任何创建自定义类型的机制,而所有值最终都将是这6种数据类型。其数据类型的动态性特点足以表示所有数据。JS提供typeof操作符来检测变量的数据类型。 (typeof返回的是字符串有六种可能:"number","string","boolean","object","function","undefined")。     我们先来看看Undefined这个数据类型吧,Undefined类型只有一个特殊的值——undefined。 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:    (1)变量被声明了,但没有赋值时,就等于undefined。    (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。    (3)对象没有赋值的属性,该属性的值为undefined。    (4)函数没有返回值时,默认返回undefined。 JavaScript中检测对象类型的运算符有:typeof、instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串。如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在)。 但 typeof 的能力有限,其对于Date、RegExp类型返回的都是"object"。如: ? 1 2 3 typeof{};// "object" typeof[];// "object" typeofnewDate();// "object" 所以它只在区别对象和原始类型的时候才有用。要区一种对象类型和另一种对象类型,必须使用其他的方法。如:instanceof 运算符或对象的 constructor 属。 2)instanceof 运算符。 instanceof 运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。如: ? 1 2 3 4 []instanceofArray;// true []instanceofObject;// true []instanceofRegExp;// false newDateinstanceofDate;// true 所以,可以用instanceof运算符来判断对象是否为数组类型: ? 1 2 3 functionisArray(arr){   returnarrinstanceofArray; } JS 数据类型转换 方法主要有三种: 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。 2. 强制类型转换 还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。 ECMAScript中可用的3种强制类型转换如下:  Boolean(value)——把给定的值转换成Boolean型;  Number(value)——把给定的值转换成数字(可以是整数或浮点数);  String(value)——把给定的值转换成字符串。  用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。  当要转换的值是至少有一个字符的字符串、非0数字或对象(下一节将讨论这一点)时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。 3. 利用js变量弱类型转换 举个小例子,一看,就会明白了。 <script>  var   str= '012.345 ';  var   x   =   str-0;  x   =   x*1; </script>
点赞 评论
牛客网
牛客网在线编程
牛客网题解
牛客企业服务