js的数据类型有哪些

JavaScript018

js的数据类型有哪些,第1张

JS数据类型有7种,分别是:3种基本类型(数字,字符串,布尔),2种引用数据类型(对象,数组),以及2种特殊数据类型(undefined,null)。

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

Javascript中一切皆为对象。然后引用类型其实指的是内存中存储的是值的一个地址,而不是这个值的本身。和它相对应的是值类型,值类型在内存中是直接存储值本身的。比如一段字符串。

当修改一个引用类型obj1上的str的值时,因为obj2和obj1引用的是同一地址,所以obj2的str也会跟着改变,当我直接把另一个新的值赋给obj1时,这时obj1和obj2的引用地址不一样了,所以obj2的str不再跟着改变,而值类型不会有这类问题。

什么是NaN:

        NaN 就是在发生类型强制转换的时候会产生 NaN ,也就是把其他类型转换成 Number 类型时,不能转换而返回的结果。

几种转换为 Number 类型的方法及可能出现NaN情况:

        第一种转换函数:parseInt / parseFloat

                console.log(parseInt(" 我是谁 "))   console.log((" 我是谁 "))

以上两种转换函数的结果就会返回 NaN 因为转换的不是一个有效数字啊。

          第二种强制转换类型: Number()

                  console.log(Number("12px"))返回 NaN 因为不是一个有效数字,后面有文字

            第三种变量弱类型转换:

                    var str = '012.345 '      var x = str - 0      console.log(x, typeof x)  // 这就是正常的了

那在JS中不管是什么都会有个类型,那 NaN 是个啥类型呢?

这里可以看到,NaN 的类型是 Number,那既然是 Number 类型,那我用它来比较是不是 数字类型 可不可以勒,那咱们就来看一下。

那这里怎么返回的都是 false 呢? 并且自己连自己都不等于,NaN的英文翻译是:Not a number (不是一个数字的缩写),那居然你不是一个数字 比喻是A,我也不是一个数字 比喻是B,那么 A == B 嘛?你会发现并不相等 返回 false。

那我想判断一个 变量是不是数字类型,不能使用NaN方法,那就有了 isNaN 的出现,请看下方用法:

 isNaN   返回值是 如果你是有效数字,就是返回false,这里为啥是false 请看上面 NaN 英文的翻译 ,如果你返回的不是一个有效数字就是 true。

原理相当于是:

这里你会发现,判断的时候通过Number进行了一波隐式转换,才得到最终结果 false。

说到在项目中真实的用处,目前还没有遇到,但是如果你了解这个方法,遇到相关处理数据需要判断时,你就会想到它啦,以上就是本人对 NaN 及 isNaN 的相关介绍, 还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!

    /*  

    1.js中只有一种数据类型

    2.js中的整数会被精确到15位(如果不使用科学计数法)

    3.小数的最大位是17位

    */

    var x = 10

    var y = 20

    var z = "The result is: " + x + y

    console.log('结果为',z)//The result is: 1020

    var a =0.1 + 0.2

    var b =0.3

    console.log('浮点数的值',a,a == b) //0.30000000000000004 false

    /*  

    js中数字相关的方法

    */

    /*  

    返回字符串

    */

    toString()

    /*  

    返回指定位数的字符串值

    不会改变原来数字

    */

    var x = 9.656

    let x0 = x.toFixed(0)           // 返回 10

    let x2 = x.toFixed(2)           // 返回 9.66

    console.log('toFixed',x,x0,x2)   //9.656 10 9.66

    /*  

    返回指定长度的字符串值

    不改变原来的数字

    */

    var x = 9.656

    let xT0 = x.toPrecision()        // 返回 9.656

    let xT2 = x.toPrecision(2)       // 返回 9.7

    console.log('toPrecision',x,xT0,xT2)   //9.656 9.656 9.7

    /*  

    以数值返回数值

    */

    // valueOf()

    /*  

    将js变量转换为数值

    无法转换为数字返回 NaN

    */

    let an = true

    let ar = Number(an)

    console.log('Number',ar)

    /*  

    解析一段字符串返回数字

    允许空格。只返回首个数字:

    */

    parseInt("10")         // 返回 10

    parseInt("10.33")      // 返回 10

    parseInt("10 20 30")   // 返回 10

    parseInt("10 years")   // 返回 10

    parseInt("years 10")   // 返回 NaN

    /*  

    解析一段字符串并返回数值。允许空格。只返回首个数字:

    */

    parseFloat("10")        // 返回 10

    parseFloat("10.33")     // 返回 10.33

    parseFloat("10 20 30")  // 返回 10

    parseFloat("10 years")  // 返回 10

    parseFloat("years 10")  // 返回 NaN