数据与变量

Posted qqinhappyhappy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据与变量相关的知识,希望对你有一定的参考价值。

数据

  • 数据:存储在内存中代表特定的一些信息,本质上就是一串二进制数字。
  • 特点:可传递,可计算。
  • 数据类型:
    • 基本数据类型:
      • number :常规数字和NaN
        NaN:not a number但是它属于number类型。注意NaN和任何值包括自己都不相等!所以不能通相等来判断是否为有效数字

         console.log(('aa') == NaN);//false
        
         console.log(10 == NaN); //false
        
         console.log(NaN == NaN);//false
        isNaN:用来判断一个数是否为有效数字。true:不是有效数字 false:是有效数字。
               在检测时会首先判断是否为number类型,如果不是将自动转换为number类型再判断是否为NaN类型,如果是number类型则直接判断是否为NaN类型。
        console.log(isNaN('aa'));//true 不是有效数字
        console.log(isNaN(10));//false 是有效数字
      • string :所有单引号 双引号 反引号包起来的东西
      • boolean :true false
      • null(空对象指针)
      • underfined(未定义)
    • 引用数据类型:
      • object
      • array
      • function

内存

  • 内存:内存条通电后产生可存储数据的空间(临时的)
  • 分为:栈内存(存储变量)和堆内存(存储对象)
    每块内存都有两个数据:内部存储的值和自身的地址

变量

  • 变量:由变量名和变量值构成,在内存中占有一定的空间。在编程语言中,其实变量就是一个名字,用来储存和代表不同值的东西。
  • 声明变量:
    1.var a=1
    2.let b=2
    3.const c=3 创建的值(可以理解为常量)不能修改并且必须在定义时初始化(赋值)

    4.funtion fun()声明函数也相当于声明变量
    5.class Person{}创建类也相当于声明变量
    6.import fun from‘./index.js‘模块导入也相当于声明变量
    7.Symbol创建唯一的值 let a=Symbol(100) let b=Symbol(100) console.log(a==b)//false

数据类型的转换

强制类型转换:

  • 转换为string类型:
    • String()
      String(123)
    • toString():当你尝试输出一个对象或一个变量时 javascript 会自动调用变量的 toString() 方法
      a.toString()
  • 转换为number类型:
    • Number():转换规则

      1)如果是Boolean值,true和false将分别转换为1和0。
      2)如果是数字值,只是简单的传入和返回。
      3)如果是null值,返回0。
      4)如果是undefined,返回NaN。
      5)如果是字符串:
      ① 字符串中只包含数字时,转换为number类型
      ② 字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值(同样也会忽略前导零);
      ③ 如果字符串是空的(不包含任何字符),则将其转换为0;
      ④ 如果字符串包含任意一个非有效字符,就将其他转换成NaN.
      ⑤ 将引用数据类型转换为number,是基于tostring()方法将其转换为string类型后再转换为number,只要字符串中有非有效数字就为NaN

      console.log(Number(‘123‘));//number
      console.log(Number(‘123.1‘));//123.1
      console.log(Number(‘123.1.1‘));//NaN
      console.log(isNaN(Number(‘50px‘)));//true 字符串中有一个为非有效数字就会被转换为NaN
      console.log(Number(null));//0
      console.log(Number(undefined));//NaN
      console.log(Number({name: ‘jack‘}));//NaN
      console.log(Number([]));//0
      console.log(Number([12]));//12
      console.log(Number([11, 23]));//NaN

    • parseInt():

      1)如果第一个非空格字符不是数字字符或都负号,parseInt()就会返回NaN; 用parseInt()转换空字符串会返回NaN
      2)如果第一个非空格字符为数字字符,继续向下转换,知道遇到非数字字符,将其之前的转换
      例如:"50px"会被转换为50,因为"px"会被完全忽略。类似地"22.5"会被转换为22,因为小数点不是有效的数字字符。
      3) 如果字符串以"0x"开头且后跟数字字符,就会将其当作一个十六进制整数;
      4) 如果字符串以"0"开头且后跟数字字符,就会将其当作一个八进制整数;

    • parseFloat():

      和parseInt类似,从第一个非空字符开始知道遇到一个无效的浮点字符开始,也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。例如:"22.34.5"将会转换为22.34。

          console.log(Number('50.5px'));//NaN
      
          console.log(parseInt('50.5px'));//50
      
          console.log(parseFloat('50.5px'));//50.5
      
  • 转换为boolean类型:

    自动类型转换:

    • 自动转换为boolean类型:

      以下六种情况转为false,其余转换为true:
      1)null
      2) ""
      3)underfined
      4) 0
      5)‘false‘
      6)NaN

        if(''){
            console.log('true')
        }else{
            console.log('false'    )
        }
    • 不同类型的数据互相运算时:
       加法运算:任何类型与string类型进行相加,都会转换为string类型然后拼接,没有string类型则转换为number类型进行运算
        let a=123
        let b='hello'
        console.log(a+b)//123hello
    
    
    
       其他运算:转换为number类型然后进行运算,NaN和任何类型运算结果都是NaN类型
        let a='hello'
        let b=123
        console.log(a-b)//NaN

以上是关于数据与变量的主要内容,如果未能解决你的问题,请参考以下文章

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏

Spark闭包与序列化

如何创建片段以重复变量编号中的代码行

如何使用Android片段管理器传递变量[重复]

这些片段是等价的吗? (NVL 与例外)

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener