js基础进阶

基本数据类型(存储于栈内存):
number ,string,boolean,null,undefined,
number:包括整数,浮点数,科学计数,进制
string:包括"",’’,``
null:只有null
undefined:只有undefined

引用数据类型(存储于堆内存)…考点:深浅复制:
Array,function,object…
var arr = []
var fn = function(arg1,arg2){} fn(arg1,arg2)
function fn(arg1,arg2){} fn(arg1,arg2)
引用图:
在这里插入图片描述
typeof 操作结果可能是 number,string,Boolean,function,object,undefined
typeof 操作结果的类型一定是string
typeof 操作引用类型的值要么是 function 要么是object

null 和 undefined 的区别:

null代表一个空值,而undefined表示变量未赋值
null只有在自己手动赋值的情况下才会出现 而undefined只要未赋值就会出现
类型不同: typeof null结果是object typeof undefined为undefined
undefined派生自null 因此 null == undefined 结果为true 但===时失效

数据在Boolean中的状态
Boolean值 true false
number 非0 0和NaN
string 非空 空字符串
object 任何引用类型 null
undefined undefined

关于number类型的小数精度问题
小数位数大于17位时 会经常出现精度失真
console.log(0.1+0.2) //“0.30000000000000004”
处理失真的几种方式:
1,将小数放大为整数进行运算
console.log(((0.110)+(0.210))/10)
2,保留小数位数的方式
console.log((0.1+0.2).toFixed(2)) //保留两位小数
3,取整,只保留整数位
console.log(Math.floor(0.1+0.2)) //向下取整
console.log(Math.ceil(0.1+0.2)) //向上取整
console.log(Math.round(0.1+0.2)) //四舍五入

面试真题:
console.log(100/0) //infinity
console.log(isFinite(Infinity)) //false
console.log(typeof 5/0) //NaN typeof 优先级高于除法
console.log(typeof typeof 5/0) //NaN
console.log(typeof(7/0)) //number
console.log(typeof(typeof 9/0)) //number
console.log(typeof typeof (typeof 9/0)) //string
console.log(isNaN(NaN)) //true

字符串转化为整数规则
console.log(Number(‘123’)) //123
console.log(Number(‘1.2.3’)) // NaN 存在两个小数点则无法转换
console.log(Number(’ 123 '))//123
console.log(Number(‘1 23’))//NaN 字符串在转化为数字时 前后空格可以忽略,但中间不能忽略
console.log(Number(‘12a3’)) //NaN 字符串转数字 字符串中只能存在数字有关的字符

当引用类型转为数字时 优先调用 valueOf()方法  再toString()方法
var arr = [11] ,[11,22]
拆分步骤:
console.log(arr.valueOf()) //[11],[11,22]
console.log(arr.toString()) //'11','11,22'
console.log(Number(arr)) // 11 , NaN
		
数字类型 NaN的用法及其说明
	console.log(NaN == NaN) // false  NaN与任何值都不相等 与自己都不相等
	NaN参与的任何运算 其结果都为NaN
	console.log('number'/100) //NaN 先转化为number类型
	console.log(isNaN('dhfef')) //true 同理 先转化为number类型
	console.log(isNaN('')) //false
	var arr = []
	console.log(isNaN(arr)) //false
		
parseInt 和 parseFloat
	一:parseInt() //从前往后取数字 遇到非数字则停止读取
	var str = '12s4';
	console.log(Number(str)) //NaN
	console.log(parseInt(str)) //12
		
	console.log(parseInt('')) //NaN
	console.log(parseInt(null)) //NaN
	console.log(parseInt('12.56')) //12
    parseFloat():从前往后取符合小鼠数字的字符,只支持10进制,支持科学记数法
    console.log(parseFloat('12.56a32')) //12.56
	console.log(parseFloat('12.a56a32')) //12
	console.log(parseFloat('3.12e10')) //31200000000
		 
    parseInt()支持传递两个参数 支持2/8/10/16 0和不写默认为10进制
	console.log(parseFloat('070')) //70
	console.log(parseFloat('070',16)) //112
	console.log(parseFloat('070' ,2)) //0
	console.log(parseFloat('070',8)) // 56
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值