关于javascript的面试总结题

1、数据类型的判断

我们可以这样去回答:
一共有四种方式1、typeof 2、instanceof 3、constructor 4、object.prototype.toString.coll()来判断但是这四种方法都不能完整的解决数据类型判断 typeof只能判断基本数据类型 它对于引用数据类型只能返回object,但是我们判断自定义数据类型可以用instanceof和constructor但是它俩都不能很好的解决内置数据类型判断,因为instanceof它对new和undefined判断不出来 constructor对Array也判断不出来 object.prototype.toString.call()主要用于判断内置数据类型

2、作用域链

简单来说是 就近原则
变量的作用域链:一个函数在访问变量的时候,优先使用自己的局别变量,如果没有这个变量的声明,则向上一级访问,一直访问到全局 如果全局都没有的话 说明语法错误 is not defined

3、js预解析

简单来说就是 先使用后定义
定义必须用 :

  1. var 定义一个变量 (把这个变量预解析为undefined)
  2. 用function 定义一个函数 (预解析为函数字符串)
  3. 函数传参的变量
    代码展示:
    在这里插入图片描述

4、闭包

定义:当一个函数的返回值是另一个函数,而返回的那个函数如果调用了其父函数的内部变量,且返回的那个函数在外部被执行,就产生了闭包。
闭包同时也是一个环境,具体指的就是外部函数——高阶函数
闭包的三个特性:

  1. 函数套函数
  2. 内部函数可以直接访问外部函数的内部变量或参数
  3. 变量或参数不会被垃圾回收机制回收 (垃圾回收机制:1、标记清除 2、引用计数)

闭包的优点

  1. 变量长期存在内存中
  2. 缓存数据延长作用域链
  3. 私有成员的存在

闭包的缺点

  1. 占内存
  2. 对捕获的变量是引用,不是复制
  3. 父函数每调用一次,会产生不同的闭包

闭包的应用场景

  1. setTimeout
  2. 回调
  3. 函数防抖,节流
    防抖:函数被高频触发时停止触发后延时n秒再执行函数
    节流:函数被高频触发时延时n秒才会执行
  4. 封装私有变量

5、字符串常见的方法

  1. chartAt( ):返回在指定位置的字符;
  2. concat( ):字符串连接;
  3. indexOf( ):检索字符串,找不到返回-1;
  4. slice( ):提取字符串片段,并在新的字符串中返回被提取的部分;
  5. split( ):字符串转数组;
  6. substr( ):从起始索引号提取字符串中指定数目的字符;
  7. substring( ):提取字符串中两个指定的索引号之间的字符;
  8. toLowerCase( ):字符串转小写;
  9. toUpperCase( ):字符串转大写;
  10. valueOf( ):返回某个字符串对象的原始值;
  11. trim( ):删除字符串两边的空格

数组ES5中常见的方法

  1. concat( ):数组合并。
  2. join( ):数组转字符串。
  3. pop( ):删除最后一个元素。
  4. push( ):数组向后添加。
  5. unshift( ):数组向前添加。
  6. shift( ):删除第一个元素
  7. slice( ):数组元素的截取,返回一个新数组,新数组是截取的元素,可以为负值。
  8. sort( ):对数组元素进行排序;
  9. splice( ):删除元素,并向数组添加新元素;
  10. toString( ):数组转字符串;

深拷贝浅拷贝

深拷贝和浅拷贝是针对复杂的数据类型来说的浅拷贝只拷贝一层,深拷贝是层层拷贝
深拷贝:
拷贝的是变量值,对基本数据类型再复制
浅拷贝:
只是复制了引用地址,两个对象同时指向了同一个人内存地址,所有任意一个对象的修改,另一个对象也会随之改变
深拷贝代码 递归
在这里插入图片描述

倒叙代码

在这里插入图片描述

for in遍历 数组 对象

在这里插入图片描述
For of 遍历的两类对象 - 类似数组的对象 可遍历对象 实现Itrartor接口的对象

. 在这里插入图片描述

sort排序

在这里插入图片描述

把数组中最大值或者最小值找出来

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值