发表于: 2019-10-18 23:36:13

1 872


今日完成的事

复习js基础

 Number数据类型 就是0 12 -12 12.50 整数 负数 小数和NaN

NaN:not  a  number意思是不是一个数,但是属于number类型。

NaN可能是任何东西,NaN和任何其他值都不相等,包括他自己

IsNaNis not  a  number意思是非有效数字。

IsNaN()函数是用来检测当前这个值是否为非有效数字,如果不是有效数字检查结果是true,是有效数字为false

注意一点当用isNaN检测值的时候,检测的值不是number类型的,浏览器会默认用Number()函数把值先转换为number类型,然后再去检测。

所以isNaN”12”)检测结果为false

Number()把其他数据类型转化为number类型的值。

所以Number”12”=12isNaN(“12”)的值是false

使用Number转化时只要出现任何一个非有效数字字符,结果就是NaN

Numbertrue=1

Numberfalse= 0

Numbernull= 0

Numberundefined=NaN

引用数据类型转换成Number首先用tostring()函数转化为字符串,再把字符串转化为number即可,空数组转化为空字符串。

只有一个数字或者空的的数组可以转化成number,但是其他引用数据类型转化为number就是NaN,空字符串转化成数字0

空对象转化成字符串是 object object                                                

变量提升

在浏览器执行第一行代码之前会进行变量提升和函数定义,变量提升只会发生在当前作用域

浏览器在执行创建函数这一步时候会跳过,因为在开头函数就已经被定义了。

var和不带var的区别,在全局作用域下声明一个变量相当于给window全局对象设置了一个属性,变量的值就是属性值(私有作用域下的私有变量和window没有关系),全局变量一改,window属性值也修改,window.a的值修改,变量a的值也改,全局变量和Window中的属性存在映射机制(一个改另一个也跟着改),私有作用域,要是一个变量不带var会向上级作用域查找,不是继续向上查找,一直找到window,这种查找叫做作用域链,不带var的不是变量,是给window增添一个属性。If条件下 的条件提升,在当前作用域下,不管是否成立都要进行变量提升,带var的只是声明,带function的在老版本浏览器渲染机制下,声明加定义都处理,但是为了迎合ES6中的块级作用域,新版本浏览器对于函数(在条件判断中的函数),不管条件是否成立,都只是先声明,没有定义。If判断为true,进入if体后才会进行提升和定义

关于重名的处理,如果名字重复了,不会重新声明,只会重新赋值,不管是执行的时候还是提升的时候

Es6基于let或者constant创建的变量或者函数不存在变量提升并且切断了全局变量与window属性的映射机制

nullundefined

null:空,没有

undefined:未定义

空字符串与null的区别,空字符串开辟了内存,消耗了一点性能,null一点没有。

Nullundefined区别,null一般指现在没有,以后可能有也可能没有,但是预期想有。一般都是手动赋值为null,后期在赋值。Undefined是完全没在预料之内的。

明天计划的事

把搜索写完

遇到的困难

搜索比想象中的要难许多

收获

对业务逻辑的理解更加深刻了。


返回列表 返回列表
评论

    分享到