js学习

变量

     使用var 定义的变量,在最外层定义时,可以是使用window获取

    使用 let 和 const 时,就不行,let 和cont是从当前作用域中获取

     

   实现一个const

    

数据类型

   null、undefined 、NaN、0、空字符串  会在转换成布尔值的时候转化为false

for循环

     可以使用break提出循环

算数运算符

    二元运算符   +  -   *  /   %    **       加、减、乘、除、余、次方

    一元运算符:1.一元正号,不参与计算而是把其它类型转换成数字  

                             

                        2.一元负号,也是把其它类型转换为数字,但是前面会加上负号

逻辑运算符

     1.!! 双重非,通常将数据类型转化成布尔值

函数

     函数声明写法会自动提升到最上面,函数表达式不会被提升

     函数可以使用arguments获取所有参数

对象

     Object.create也能创建对象,但必须传递一个对象作为参数,传递的参数会成为新对象的原型

      

数字

    0.1+0.2!==0.3  原因就是因为 在计算器中所有都是由二进制表示,而0.1和0.2都是无穷二进制表示,会被计算器截断 

     

     解决计算精度方法:

         1.使用toFixed()   强制保留小数点后位数

         2.将运算的小数扩大到10倍、100倍....,就是变成整数后计算,在除以倍数

   NaN 是 not a Number 的意思

    

数组

    数组中empty和undefined的区别

         empty表示空位,不是一种数据类型 是由于人为修改arr.length或写入时多写逗号造成的,使用forEach会忽略空位,是用for会转化为undefined并遍历

         undefined是一种数据类型,只是值未定义

JSON

      JSON.stringify中第三个参数可以控制格式

        

 事件

      自定义事件  Event和CustomEvent都可以,CustomEvent注册的自定义事件可以在detail中传递参数

       

 

typeof   

      typeof null  会输出一个object,原因是 null表示一个空指针,内部又和对象一样,所有就会object

      typeof 经常被用来检测基础类型,但是不够准确,无法区分数组、对象、null,更精准的检测应考虑使用 Object.prototype.toString 方法

debugger 调试

     

 对象中的getter和setter

    

 也可以使用Object中deineProperty方法设置

   

new操作符和构造函数

         

 

       当使用new运算符调用函数时,大致会进行一下几个操作

       1.创建一个空对象

       2.将函数的this指向这个空对象

       3.执行函数

       4.如果函数没有指定返回值,则直接返回this(一开始创建的空对象),否则返回指定返回值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

posted @ 2023-09-18 11:20  fanbu  阅读(3)  评论(0编辑  收藏  举报