No2.3 前端面试题3*4

1. js的数据类型及检测方式

  1. js数据类型分为两大类
  • 基本类型:string number boolean undefind unll (symbol bigint)
  • 引用类型:Object(Array Function Data…)
  • NaN是一个数值类型,但不是具体的数字
  1. 检测方式:
  • typeof() 适用于基本数据类型, 数组指向Object
        console.log(typeof ([1, 2, 3])); //object
  • instanceof() 只能判断引用数据类型 不能判断基本数据类型
        console.log([] instanceof Array);//true
        console.log('123' instanceof String);//false
  • constructior
        console.log(('123').constructor === String);//true
  • Object.protptype.toString.call() 原型链???
        var opt = Object.prototype.toString
        console.log(opt.call(1));//[object Number]
        console.log(opt.call('1'));//[object String]
        console.log(opt.call(true));//[object Boolean]
        console.log(opt.call([]));//[object Array]
        console.log(opt.call({}));//[object Object]
  1. 判断各种情况的数据类型
     <script>
        console.log(true + 1);       //2
        console.log(true - 1);       //0
        console.log('a' + 1);        //a1
        console.log('a' - 1);        //NaN
        console.log('a' + true);     //atrue
        console.log('a' - true);     //NaN
        console.log('a' + undefined);//aundefined
        console.log('a' - undefined);//NaN
        console.log(1 + undefined);  //NaN
        console.log(1 - undefined);  //NaN
        console.log(true + undefined);//NaN
        console.log(true - undefined);//NaN
    </script>

2. 闭包

  1. 什么是闭包
  • 函数嵌套函数,内部函数被外部函数返回并保存下来时,就会产生闭包
 function fn(a) {
            return function () {
                console.log(a);
            }
        }
        var fo = fn('1234')
        fo()//1234
  1. 闭包的特点
  • 可重复利用变量
  • 此变量不会污染全局
  • 变量一直保存在内存中,不会被垃圾回收机制回收
  1. 闭包的缺点
  • 闭包较多时,会消耗内存,导致页面性能下降,甚至IE浏览器会导致内存泄漏
  1. 闭包使用场景
  • 防抖,节流
  • 避免全局污染时

3. 前端内存泄漏

  1. 什么是内存泄漏
  • js里已分配内存地址的对象,由于长时间没有释放或无法清除,造成长期占用内存现象,使内存资源大幅度浪费,导致运行速度缓慢,甚至崩溃
  1. 内存泄漏的因素
  • 一些声明赋值的变量
  • 未被清除的引用元素
  • 未清空的定时器
  • 过度的闭包
  1. 解决的方法

4. 事件委托

  1. 什么是事件委托(事件代理)
  • 原理是利用的事件冒泡的机制实现,把子元素的事件绑定到了父元素身上
  • 如果子元素阻止了事件冒泡event.stopPropagation(),那么委托也就不成立
  • 绑定事件addEventListener(‘click’,函数名,true/false) 这里默认是false(事件冒泡),true(事件捕获)
  1. 事件委托的好处
  • 提高性能
  • 减少事件绑定
  • 减少内存占用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值