关注
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>
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 27届学院二本,袋鼠云->快手->腾讯wxg,25年末聊聊我的前端之路1.2W
- 2... 本科五段大厂实习,秋招五个offer,我的校招结束了6884
- 3... 适可而止吧!你就是“烂泥”5889
- 4... 大四双非水产专业上岸阿里后端(五)5023
- 5... 我的世界观,就是对抗优绩主义的武器3881
- 6... 27双非杀入字节!2944
- 7... 26届双非硕Java秋招总结1725
- 8... 学院本的秋招漫漫路,谷底之后只剩坦途1611
- 9... 日常实习-小红书后端java二面1582
- 10... 实习被“放养”零产出,该及时止损还是继续苟着?1567
正在热议
更多
# 实习没人带,苟住还是跑路? #
2219次浏览 67人参与
# 工作中的卑微时刻 #
29895次浏览 190人参与
# 元旦假期你打算怎么过 #
2886次浏览 85人参与
# 过年期间可能会经历的尴尬瞬间 #
48560次浏览 313人参与
# 我们是不是被“优绩主义”绑架了? #
4516次浏览 175人参与
# 从夯到拉,评价编程语言 #
27884次浏览 148人参与
# 如何看待应届生身份? #
210807次浏览 2234人参与
# 查收我的offer竞争力报告 #
263879次浏览 1644人参与
# 多益网络工作体验 #
60246次浏览 300人参与
# 牛客2025仙途报告 #
21694次浏览 325人参与
# 机械制造面试记录 #
299938次浏览 3143人参与
# 实习心态崩了 #
96598次浏览 494人参与
# 华为工作体验 #
277268次浏览 1355人参与
# 26届秋招投递记录 #
109367次浏览 653人参与
# 实习打杂,要跑路吗 #
54348次浏览 330人参与
# 你有哪些缓解焦虑的方法? #
44801次浏览 873人参与
# 找工作,行业重要还是岗位重要? #
88357次浏览 1769人参与
# 华为池子有多大 #
154615次浏览 867人参与
# 今年你最想重开的一场面试是? #
18335次浏览 175人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105360次浏览 1647人参与
