zoukankan      html  css  js  c++  java
  • js中声明Number的五种方式

    转载自:http://www.jb51.net/article/34191.htm

     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 = 123.33333333333333...3333333333333333333333333....,
    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              */
    28                     var num = new Number(123); 
    29                     console.log(typeof num); //输出:object 
    30                      console.log(Object.prototype.toString.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为用户传入的参数 
    42                 2.否则,返回一个对象,至于具体转换成的对象类型,可参见下表;具体到上面的例子,本质等同于new Number(123): 
    43              */
    44             /*
    45              * 不是说字面量方式声明的只是普通的数值类型,不是对象吗?但不是对象哪来的toString方法调用?
    46              * 当用户通过字面量方式声明一个变量,并在该变量上调用如toString等方法,JS脚本引擎会偷偷地创建该变量对应的包装对象,
    47              * 并在该对象上调用对应的方法;
    48              * 当调用结束,则销毁该对象;这个过程对于用户来说是不可见的
    49              */
    50         </script>
    51     </body>
    52 </html>
  • 相关阅读:
    opencv出现问题:/usr/lib/x86_64-linux-gnu/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'
    SCI-HUB 解锁论文的正确姿势——如何免费下载论文
    VS2019 实现与 Linux服务器同步
    VS Code 写代码实时同步服务器【Sftp插件】
    Docker实用技巧(二):容器与主机之间复制文件
    Docker实用技巧(一):镜像的备份/保存/加载/删除
    mycat注解及高可用(三)
    mycat分片及主从(二)
    SVN中trunk,branches,tags用法详解
    寄存器的英文全称
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7195577.html
Copyright © 2011-2022 走看看