阅读 423

面试:深信服前端实习面经

一面

数据类型判断

Obejct.prototype.toString.call([])//[Object Array]
Array.isArray([])//true
[].constructor === Array//true
[] instanceof Array//true
typeof ''//string
复制代码

数组去重

let nums = [1,2,3,4,4];
let newNums = new Set([...nums]);
function noRepeat(nums){
    let target = [];
    nums.forEach(element =>{
        if(target.indexof(elelment)===-1){
        target.push(element)
        }
    })
}
复制代码

数组中数组和对象去重

es6新特性

  1. let、const
  2. 模板字符串
  3. 箭头函数
  4. 函数参数默认值
  5. Spread / Rest 操作符(...)
  6. 二进制和八进制字面量
  7. 对象和数组解构
  8. 类class
  9. for...in和for...of

JavaScript遍历对象的方法

  1. for...in它还会得到对象原型链上的属性
const obj = {
    id:1,
    name:'zhangsan',
    age:18
}
for(let key in obj){
    console.log(key + '---' + obj[key])
}
复制代码
  1. Object.keys(obj)/Object.values(obj)
const obj = {
    id:1,
    name:'zhangsan',
    age:18
}
console.log(Object.keys(obj))//['id','name','age']
console.log(Object.values(obj))//['1','zhangsan','18']
复制代码
  1. 使用Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(包含不可枚举属性)

const obj = {
    id:1,
    name:'zhangsan',
    age:18
}
Object.getOwnPropertyNames(obj).forEach(function(key){
    console.log(key+ '---'+obj[key])
})
//id---1  name---zhangsan age---18
复制代码

Promise规范

  1. promise 有三个状态:pendingfulfilled,or rejected;「规范 Promise/A+ 2.1」
  2. new promise时, 需要传递一个executor()执行器,执行器立即执行
  3. executor接受两个参数,分别是resolvereject
  4. promise 的默认状态是 pending
  5. promise 有一个value保存成功状态的值,可以是undefined/thenable/promise;「规范 Promise/A+ 1.3」
  6. promise 有一个reason保存失败状态的值;「规范 Promise/A+ 1.5」
  7. promise 只能从pendingrejected, 或者从pendingfulfilled,状态一旦确认,就不会再改变;
  8. promise 必须有一个then方法,then 接收两个参数,分别是 promise 成功的回调 onFulfilled, 和 promise 失败的回调 onRejected;「规范 Promise/A+ 2.2」
  9. 如果调用 then 时,promise 已经成功,则执行onFulfilled,参数是promise的value
  10. 如果调用 then 时,promise 已经失败,那么执行onRejected, 参数是promise的reason
  11. 如果 then 中抛出了异常,那么就会把这个异常作为参数,传递给下一个 then 的失败的回调onRejected

实现Promise.all

url中#的作用

#在URL中指定的是页面中的一个位置 井号作为页面定位符出现在URL中,比如:www.httpwatch.com/features.ht… ,此URL表示在页面features.htm中print的位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。

URL特殊字符需转义
1、空格换成加号(+)
2、正斜杠(/)分隔目录子目录
3、问号(?)分隔URL查询
4、百分号(%)制定特殊字符
5、#号指定书签
6、&号分隔参数

VueRouter hash模式和history模式的原理

文章分类
前端
文章标签