js中声明Number的五种⽅式
1<!DOCTYPE html>
2<html>
3<head>
4<meta charset="UTF-8">
5<title>js中声明Number的五种⽅式</title>
6</head>
7<body>
8<script>
9/*
10⽅式⼀:最常见的⽅式,通过数字字⾯量⽅式声明
11 var num = 123;
12 1.解析变量的值,⽐如说取出整数部分、⼩数部分等,因为数字声明⽅式还可以为num = .123,num = 123e4等形式
13 2.对解析出来的值取近似值,⽐如num = ,
14这个时候就要取近似值了,具体取近似则规则不展开
15 3.此种⽅式声明的变量,只是个简单的数字字⾯量,并不是对象(⾄于为什么可以在上⾯调⽤toString等⽅法,后⽂讲解)
16
17⽅式⼆:偶尔使⽤⽅式,⼤部分情况下是将字符串转成数字
18 var num = Number(123);
19 1.此处只是将Number当作⼀个普通的函数来调⽤,⽽不是构造⽅法,因此返回的不是对象,⽽是⼀个简单的数值
20 2.本质与⽅式⼀相同;相对于⽅式⼀的区别在于,需要针对传⼊参数的类型,执⾏不同的类型转换过程,试图将参数解析成对应的数值21
22⽅式三:很少使⽤,各神书,包括犀⽜书,都将其列⼊不推荐⽅式
23 var num = new Number(123);
24 1.此处将Number作⽤构造⽅法调⽤,返回的是Number类型的对象,该对象能够访问Number的原型属性以及⽅法;
25这样说可能有些迷惑,后⾯会说到
26
27*/
28var num = new Number(123);
29 console.log(typeof num); //输出:object
30 console.log(String.call(num)); //输出:[object Number]
31/*
32 3.返回的Number类型对象内部的原始值( [[PrimitiveValue]]),为经过类型转换后获得的数字值,具体转换规则与⽅式⼆提到的⼀致33
34⽅式四:神⽅式,⽬前还没见过⼈使⽤
35 var num = new Object(123);
36 1.传递了参数,且参数是⼀个数字,则创建并返回⼀个Number类型的对象 —— 没错,其实等同于⽅式三
37 2.该Number对象的值等于传⼊的参数,内部的[[prototype]]属性指向Number.prototype
38
39⽅式五:更离奇,更诡异
40 var num = Object(123);
41 1.当传⼊的参数为空、undefined或null时,等同于 new Object(param),param为⽤户传
⼊的参数
js方法42 2.否则,返回⼀个对象,⾄于具体转换成的对象类型,可参见下表;具体到上⾯的例⼦,本质等同于new Number(123):
43*/
44/*
45 * 不是说字⾯量⽅式声明的只是普通的数值类型,不是对象吗?但不是对象哪来的toString⽅法调⽤?
46 * 当⽤户通过字⾯量⽅式声明⼀个变量,并在该变量上调⽤如toString等⽅法,JS脚本引擎会偷偷地创建该变量对应的包装对象,
47 * 并在该对象上调⽤对应的⽅法;
48 * 当调⽤结束,则销毁该对象;这个过程对于⽤户来说是不可见的
49*/
50</script>
51</body>
52</html>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论