js高频面试知识点

题型整理

学习半个月js之后总结了一些js的比较容易出错的地方 代码如下

    1.call apply bind作用与区别
    //将猫抓老鼠的功能对象变成狗 改变的是函数中的this指向(函数运行上下文环境)
    // kitty.catchMouse.call(doggy, 'Mickey', 'Minnie')
    // kitty.catchMouse.apply(doggy, ['Mickey', 'Minnie'])
    // const doggyCatchMouse = kitty.catchMouse.bind(doggy, 'Mickey', 'Minnie')
    // doggyCatchMouse()
    

    2.substr substring slice区别
    //substr 第二个参数为截取几个字符 且为下标向前截取(方法未标准化一般不用)
    //substring两个参数可以任意指定 无需开头结尾顺序
    //slice必须从头到END截取且END不要 没有END就从头到尾
    //三种方法都不改变原字符串


    3.client screen offect page scroll区别
    //clientLeft 为元素到可视窗口X距离 Height为可视窗口高度不包括水平滚动条
    //screenX Y  元素到屏幕左上角距离
    //offect 相对父级元素定位 包括滚动条 固定定位为BODY
    //scrollTOP 元素相对页面卷出距离 scrollHeight 页面元素总高度(真实内容)
    //pageY,X mouse事件触发后触发位置相对于上和左的距离
    

    4.this在不同时候的指向
    //回调函数时指向window 默认绑定
    //正常情况指向函数运行上下文 隐式绑定
    //apply call bind时指向bind内的对象 显式绑定
    //var a=new Class()绑定会将实例化对象绑定在class对象中 此时this指代class 并且可以调用class内的实例化方法(但不能调用静态)
    //箭头函数绑定this直接指定对象 监听事件中回调函数可以将this绑定点击事件e.target例:e=>{this.clickHandler(e)}将点击事件对象绑定


    5.mouseenter 与moueseover区别
    //mouseenter不触发子元素 mouseover经过子元素会触发

    6.事件委托
    //将子元素事件委托给父元素并通过冒泡执行子元素事件 调用=>解决this指向并修改样式
    
    7.splice方法可以改变切割数组 splice(2,0,1) 从第二位开始删除0个元素并添加数字1返回新数组
    //slice()返回新数组
    

    8.shift unshift sort
    //sort(funciton(a,b){return a-b}) 
    //shift删除数组第一个元素并返回 unshift添加元素并返回

    9.arguments必须在函数内调用 可以作为上下文this指向 argument.length为参数长度

    10.every some fliter reduce
    //every全满足返回 some有一个 fliter返回所有满足的值 return age>18
    //reduce(function(value item index arr){ return value+=item; })(一般用前两个,分别为初值,当前元素值,索引,数组)
   

    11.递归实际是一个异步执行过程 使用ajax可以多进程执行任务队列(或者使用redis+node.js)

    12.split加reduce切割地址字符串并返回地址
    //.split("?")[1]取?号切割后第二项.reduce(function(value,item{var arr;value[arr[0]]=arr[1]}))
    //返回value对象 返回值时需要判断arr【1】的值是否为NaN为数字转换为数字Number()


    13.var a=new Date().getDate()获取不同时间可做地址

    14.document.querySelector(".div1")获取id时需要加#div1 获取class时需要加.div1 这是一个对象
    //querySelector为一个nodelist 运用时用Array.from()转换为数组

    15.!{}   {}==!{} []==![]
    // !会将后面转换为布尔值  而只有"" undefined null 0  NaN为false 所以!{}为false
    // {}==!{}-->{}==false(和布尔值比较先转换为数值)-->{}.toString()==0-->NaN==0 所以为false
    //[]==![]-->[]==false-->""==0-->true;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值