2021日准备面试突击报佛jio

1.HTML5新增内容有哪些

  1. 语义化标签(header,footer,nav,article)
  2. video,audio标签
  3. 增加了表单元素 从(form,textare,select,button) ----> ( text,password,radio,checkbox,dile,submit,reset )
  4. 新增cavans echarts就是基于canvas实现的
  5. 增加了新的api localStorage,seessionStorage,本地储存解决方案
    在这里插入图片描述

2.es6新特性

  1. const let
  2. 箭头函数
  3. 结构赋值
  4. 函数参数默认值
  5. for …of 和 for…in
    对于对象来说:
    只能用for in
 let  obj = {
   name:"1",
   age:"2"
}
for (let item in obj){
   console.log(item)    //  name   ; age
}

对于数组来说:
都可以用 for in 是下表 ,for of 是 值

let arr = [ "a","b","c"  ]
for (let item in arr ){
   console.log(item)    //  1 2 3
}
for (let item of arr ){
   console.log(item)    //  a b c 
}

  1. es6中新增加了类
    es5中可以使用原型链实现,其实class也是一种语法糖
    class 必须有constructor属性,如果你不手动定义,他就会自己定义,constructor就是构造方法
    类中的this 指的就是实例化对象

Let与var与const的区别
1.var声明的变量会挂载在window上,而let和const声明的变量不会:
2.var声明变量存在变量提升,let和const不存在变量提升
3.let和const声明形成块作用域
4.同一作用域下let和const不能声明同名变量,而var可以

变量提升
《你不知道你js》讲的很好

var a = 1

在上面这段代码中 其实不是一个直接生命复制的操作
实际会看成两个操作
var a 和 a= 1

  1. 第一个定义声明是在编译阶段进行的。
  2. 第二个赋值声明会被留在原地等待执行阶段。

let 和const 存在变量提升吗 存在 但是因为暂存性死区 // 这个复杂了 还没全搞明白

3.数组方法

  1. push() 从后面添加元素,返回值为添加完后的数组的长度
  2. arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素
  3. arr.shift() 从前面删除元素,只能删除一个 返回值是删除的元素
  4. arr.unshift() 从前面添加元素, 返回值是添加完后的数组的长度
  5. arr.splice(i,n) 删除从i(索引值)开始之后的那个元素。返回值是删除的元素
  6. arr.concat() 连接两个数组 返回值为连接后的新数组
  7. str.split() 将字符串转化为数组
  8. arr.sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的
  9. arr.reverse() 将数组反转,返回值是反转后的数组
  10. arr.slice(start,end) 切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
  11. arr.forEach(callback) 遍历数组,无return 即使有return,也不会返回任何值,并且会影响原来的数组
  12. arr.map(callback) 映射数组(遍历数组),有return 返回一个新数组 。
  13. arr.filter(callback) 过滤数组,返回一个满足要求的数组
  14. arr.jion() 方法用于把数组中的所有元素放入一个字符串。 类似与java中的to String

4. js常见问题

  1. Json如何新增/删除键值对
    添加 json [ " wangkun "] = “帅”
    删除 delete json["wangkun "]

  2. 什么是面向对象请简述
    面向对象是一种编程思想
    封装,继承,多态,
    比如vue中的观察者模式 就是面向对象的一种 定义了一个新的类 通过 subscriber 手机方法 通过publish发布方法,其实他就是一种面向对象的编程思想,react中的类组件,也是一种面向对象编程的方法 (我觉得)

  3. 普通函数和构造函数的区别
    普通函数有具名函数,匿名函数,一般通过传参数调用,
    构造函数约定一般用大写具名表达,是对象的模板,通过new关键字构建势力对象,new Array new Object构造函数中的this指的就是实例的实例化对象 promise也是一个构造函数

  4. 简述,原型,原型链,继承
    构造函数和原型,原型链
    每个函数都有自己prototype属性 指向它的原型对象,而原型对象的constructor就是他的实例化对象
    在一个实例化对象中 你要调取其中的某个属性或者方法 就会先从你的构造函数中的找 如果没有找到 他就会在你的构造函数的原型对象上继续找是不是有这个属性 (引擎会给你找) 如果 还没找到 就是找原型对象的构造函数 如果还没找到就找这个构造函数的原型对象 一直找 一直找 找到window 还找不到 在找不到 就成了undefined
    这就是原型链

  5. Promise
    peomise

  6. 请简述async的用法
    async await

  7. jsonp

概念:一种解决跨域问题的方法(非官方)
工作机制:利用动态创建一个script标签并利用它的src属性向服务器发送一次http请求,并提前声明好一个回调函数,以参数的形式。callback加声明的函数名,后段接受后,会讲返回的callback的值名称,把response数据以js的方式返回回来,前段通过参数接受后段返回的值,这就是jsonp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值