zoukankan      html  css  js  c++  java
  • typeof 返回的数据类型 及 javascript数据类型中的一些小知识点

    typeof 共返回6种数据格式:

    1、object 

    2、undefined

    3、string

    4、number

    5、boolean

    6、function

    特别注意 typeof [ ] 和 typeof null 返回的都是object ,typeof 对于原始类型来说,除了 null 都可以显示正确的类型

    typeof(Object)和typeof(Array)的结果是function,因为Object和Array本身就是内置函数。

    javascript中的数据类型:

    ECMAScript 中包含两种不同数据类型的值:基本类型值 和 引用类型值基本类型值就是简单的 数据段,而 引用类型值 指那些可能由多个值构成的 对象

    基本数据类型UndefinedNullBooleanNumber、和 String、symbol(symbol是ES6中新增的数据类型)

      按值访问的,因为可以操作保存在变量中的实际的值。

      首先原始类型存储的都是值,是没有函数可以调用的,比如 undefined.toString(),但 '1'.toString() 是可以使用的。其实在这种情况下,'1' 已经不是原始类型了,而是被强制转换成了 String 类型也就是对象类型,所以可以调用 toString 函数。

    引用数据(对象)类型Object,array,function ( 基本上所有的对象最终都是继承于Object(null和undefined没有原型对象),)

      对象类型和原始类型不同的是,原始类型存储的是值,对象类型存储的是地址(指针)。当你创建了一个对象类型的时候,计算机会在内存中帮我们开辟一个空间来存放值,但是我们需要找到这个空间,这个空间会拥有一个地址(指针)。

      我们来看个例子:

    function test(person) {
    person.age = 26
    person = {
    name: 'yyy',
    age: 30
    }

    return person
    }
    const p1 = {
    name: 'yck',
    age: 25
    }
    const p2 = test(p1)
    console.log(p1) // {name:'yck',age:26}
    console.log(p2) //  {name:'yyy',age:30}

    • 首先,函数传参是传递对象指针的副本
    • 到函数内部修改参数的属性这步,我相信大家都知道,当前 p1 的值也被修改了
    • 但是当我们重新为 person 分配了一个对象时就出现了分歧

     所以最后 person 拥有了一个新的地址(指针),也就和 p1 没有任何关系了,导致了最终两个变量的值是不相同的。

    javascript数据类型中的一些小知识点:

    1.0.1 + 0.2 = 0.3?

    在JS中,0.1+0.2是不等于0.3的,因为0.1在计算机中用二进制表示的话,会产生无限循环位数。类似于十进制中,三分之一就是无限循环小数。

    所以对这些循环小数进行数学运算时,并将二进制数据再转换成十进制时,也还是无线循环小数,对末尾进行截取后,得到的值就是0.30000000000000004

    正确的比较方法是使用JS提供的最小精度值,检查等式左右两边差的绝对值是否小于最小精度:

    Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON   (true)

    2. 666 和 new Number(666)的区别

    123 是一个number类型的数字,而Number(123)是一个对象类型的数据。

    ‘HELLO'.charAt(1) ==》 'E'

    点(.)运算符提供了装箱操作,会根据一个基础类型构造一个临时对象,所以能在基础类型上调用对应对象的方法

    3. parseInt 和 parseFloat

    parseInt(string, radix)-------将字符串转换成整型类型数字

    parseInt 会忽略字符串前面的空格,直到找到第一个非空格字符,如果第一个字符是数字字符会继续解析第二个字符,直到遇到非数字字符停止,如果第一个不是数字字符,该方法将返回NaN,不再继续执行其他操作。

     parseInt可以识别各种整数格式,如:8进制,10进制,16进制,所以可以接收第二个参数表示要转换为多少进制

    parseFloat -------将字符串转换成浮点类型的数字

      与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。
    不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的, parseFloat
    ()方法会把这个小数点之前的字符串转换成数字。这意味着字符串 "22.34.5 "将被解析成22.34。
    使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不能用八进制形式或十六进制形式。

     4. 类型转换

    https://www.cnblogs.com/freefy/p/9440214.html

  • 相关阅读:
    Spring事务管理
    Spring Bean装配(下)——注解
    Spring Bean装配(上)
    Spring入门篇
    Spring入门篇——AOP基本概念
    计算机组成原理(1)——系统概述
    浏览器缓存 总结
    React-router 4 总结
    Redux 总结
    操作系统位数 的 概念(转)
  • 原文地址:https://www.cnblogs.com/chm-blogs/p/11530772.html
Copyright © 2011-2022 走看看