JS1数据类型及转换

JS1数据类型及转换

  1. 数据类型

     (1)原始数据类型(存储于栈内存):数字、字符串、布尔型、null、undefined
     (2)引用类型(存储于堆内存):数组、函数、对象
    
  2. JS数据存储形式:
    在这里插入图片描述
    在这里插入图片描述
    栈是把空间分好了的。若var a=100;var b=a 操作时,会给a一个空间,也会给b一个空间
    堆是自己申请,有一个地址暂存区域(变量指向地址,地址指向值),然后堆给你一个地址,然后去访问, 若var arr=【1,2,3】 var brr=arr 操作时,只是把arr的地址给了brr

  3. typeof

     (1)typeof操作数据结果可能是number,string,boolear,undefined,object
     (2)typeof 操作结果的typeof值一定为string类型(typeof  (typeof  值 ) =string)
     (3)引用类型是函数则typeof结果为function       其他为object
     (4)typeof的优先级高于除法
    
  4. 出现undefined的情况

     (1)当一个变量存在但是没有值的时候会返回undefined
     (2)当函数被调用,但是没有返回值(return)的时候,该函数调用表达式的结果就是undefined
    
  5. 转换成boolean类型(用boolean函数)
    在这里插入图片描述

  6. number类型

     1)包含整数、小数,支持8/16/科学计数法
     2)解决小数精度问题
     		(1)小数换成整数(0.1*10+0.2*10)/10
     		(2)将小数保留固定的小数位(用在价格上(0.1+0.2).toFixed(5)保留5位
     		(3)只保留整数.math.floor(0.1+0.2)向下取整.  
     		 math.ceil(0.1+0.2)向上取整  
     		  math.round(0.1+0.2)四舍五入
    
  7. 转换成number类型(用number函数)

     (1)只有数字,直接转换。
     				console.log( Number(10) )//10
     (2)boolean类型true为1  false为0 。 
     				console.log(Number(true) )//1
     				console.log( Number(false) )//0
     (3)null为0 。 console.log( Number(null) )//0
     (4)//undefined为NAN 。
     				console.log( Number(undefined) )//nan
     (5)//string类型只有数字时直接转换,空字符时为0,其他字符时为Nan
     	console.log( Number(" 12 ") )//12
     	console.log( Number("") )//0
     	console.log( Number("asdad") )//nan
     (6)//引用类型时,优先调用valuesof方法,再调用tostring方法
     	var z=[100,200];
     	console.log( z.valueOf() );//[100,200]
     	console.log( z.toString() );//100,200
     	console.log( Number(z) );NaN
     	(7)
     		如果是字符串,遵循下列规则:
     			如果字符串中包含有效的十六进制格式,例如"0xf",
     		则将其转换为相同大小的十进制整数值;
     			如果是对象,则调用对象的 valueOf()方法,然后依
     			照前面的规则转换返回的值。如果转换的结果是 NaN,
     			则调用对象的 toString()方法,
    
  8. NaN的特点

     (1)与任何数都不相等,与自己都不相等
     (2)参与任何运算的时候,结果都是NaN
     ()例如:var a=NaN;
     					if(a==NaN){
     							console.log("我是NaN");
     					}  **这句话是不会执行的**
    
  9. number隐性转换

     	(1)console.log(nan/100)
     			console.log("number"/100)  //nan
     	(2)console.log(isnan(“asd”))  //true(先对“asd”进行number转	换,然后判定)
     			console.log(isnan(“”))//false
     	(3)var arr=[  ]
     			console.log(isnan(arr))//false 
    
  10. isNaN的用法
    在这里插入图片描述

  11. 转换number的其他方法

    1)parseInt():从前往后读取数字,遇到非数字则停止读取
    			(1) var str="12s2";
    				console.log(  number(str)  )//NaN
    				console.log(     parseInt(str)     );//12
    				console.log(  number("")  )//0
    				console.log(     parseInt("")     );//NaN
    			(2)支持传递两个参数,支持2/8/10/16进制
    					console.log(     parseInt(“070”,16)     );//112 。16进制
    					console.log(     parseInt("070")      )//70  默认为10进制
    					console.log(     parseInt("070",0)      )//70  写0则自动为10进制
      2)parseFloat()从前往后读取符合小数数字的字符,支持10进制和科学计数法
      				console.log(     parseFloat("12.as45")//12
      				 console.log(     parseFloat("12.45as45")//12.45
    
  12. String类型

    (1)转义:JS转义:\   和   \n        css转义: <(小于)    >(大于)      (空格)
    (2)变量.length获取变量长度         
    (3) 原始类型值  不可更改(若var a=100;   a=200;    a输出结果为200   
    只是a所指向的区域变成了200所申请的区域,100的区域依然存在,100这个值没有改变)
    (4)es6支持反向引号,支持内容换行。双引号与单引号不支持换行。
    				console.log(`多行
    											字符串
    											测试`);
    			var name = '小明';
    			 var age = 20;
    			 var message = `你好, ${name}, 你今年${age}岁了!`;
    			 alert(message);
    
  13. 转换成String

    (1)toString()方法,能转换大部分类型(null和undefined不行,这两个可以使用拼接)
    	var a=100;      console.log(   a.toString()  );
    	console.log(    null+" "   );
    (2)String()函数(可以转换所有)
    		console.log(     String( undefined)      );
    
  14. 函数 (JS函数不调用不执行,函数体里面的语句在哪里定义就在哪里运行)
    在这里插入图片描述

  15. 字符串方法

    1. indexOf(“查找的字符”,开始位置)方法,查找字符串中指定字符第一次出现的位置(可以接收2个参数)(若找不到指定字符则返回-1)
      var a=“asdas”;
      console.log( e.indexOf(“f”,2) );从第二个字符开始查找 f
      在这里插入图片描述

      2)substring(开始下标,结束下标) 截取方法,当开始下标大于结束下标的时候,会自动调换位置。
      在这里插入图片描述
      3)其他方法
      substr(开始位置,截取长度)截取方法
      slice(开始位置,结束位置)截取方法,不会自动调换位置,但是可以支持负数。
      trim()可以去掉字符串前面和后面的空格
      charAt(index)从字符串中取某个位置特定的字符
      charCodeAt(index)从字符串里取某个特定位置的字符编码
      4)与indexOf联用
      在这里插入图片描述

  16. object类型

    1)构建对象方法
    		(1)var obj1={
    					name:xt,
    					age:21,
    					sayhello:function(){
    					console.log("hello");
    					}
    					}
    		(2) var obj2=new object;
    						obj2.name="xt";
    						obj2.age="21";
    2)访问对象方法
    		(1)console.log(         对象名.属性名        )
    		(2)console.log(           对象名[   " 属性名"   ]      )       (当不确定访问哪个属性时
    		,在括号中放变量可以访问)
    
  17. 包装对象(var a=new boolean / string / number)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  1. 变量作用域

    (1)在函数体内用var声明的变量是局部变量,直接声明的变量是全局变量。
    (2)函数体内调用变量,优先调用函数体内局域变量。
    (3)变量声明只声明一次(对象的属性是唯一的),再用到的时候只是进行改变。
    (4)函数体内可以用全局变量,函数体外不能使用函数体内的变量。
    (5)函数体内没有但是需要用到的变量,就向上一级访问变量。
    
  2. 表达式
    (1)函数 / 数组 / object对象 调用valueof()方法,结果是它本身
    (2)函数 / 数组 / object对象 与数字相加,结果是字符串拼接.

例题:
(1)包装对象在这里插入图片描述
tostring()是一个方法(即就是一个函数),那么,a.tostring()是调用函数,而a.tostring是查看函数体。

test8090.tostring=100;是改变了test8090的tostring属性,(但是tostring之前是一个函数),现在变成了100,那么之后再用tostring()方法 的时候,是调用了100这个值,他不是函数,所以不能调用,所以出错。

(2)只有一function开头的才能函数提升
在这里插入图片描述
(3)% 取余符用法(点击变色)
在这里插入图片描述

(4)时间获取
在这里插入图片描述
(5)时间差
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值