当前位置: 首页 > news >正文

常见前端基础面试题(HTML,CSS,JS)(二)

ES6 新增哪些东西

  1. 箭头函数
  2. 字符串模板
  3. 支持模块化(import、export
  4. 类(class、constructor、extends
  5. let、const 关键字
  6. 新增一些数组、字符串等内置构造函数方法,例如 Array.fromArray.of 、Math.signMath.trunc 等
  7. 新增一些语法,例如扩展操作符、解构、函数默认参数等
  8. 新增一种基本数据类型 Symbol
  9. 新增元编程相关,例如 proxyReflect
  10. Set 和 Map 数据结构
  11. Promise
  12. Generator 生成器

let const var 的区别?什么是块级作用域?如何用?

  • var 定义的变量,是函数作用域,没有块的概念,可以跨块访问, 不能跨函数访问,有变量提升。

  • let 定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问,无变量提升,不可以重复声明。

  • const 用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改,无变量提升,不可以重复声明。

  • var不存在暂时性死区,letconst存在暂时性死区

  • letconst创建的全局变量没有给window设置相应的属性

暂时性死区:使用 let / const 命令声明变量之前,该变量都是不可用的

箭头函数与普通函数的区别

  1. 箭头函数没有自己的this、会捕获其所在的上下文的this值,作为自己的this值

  2. 箭头函数继承来的this指向永远不会改变

  3. call()、apply()、bind()等方法不能改变箭头函数中this的指向

  4. 箭头函数是匿名函数,不能作为构造函数,不能使用new

  5. 箭头函数没有自己的arguments

  6. 箭头函数没有prototype(原型)

  7. 箭头函数不能用作Generator函数,不能使用yeild关键字

bind,apply,call三者的区别

  1. 三者都可以改变函数的this对象指向

  2. 三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefinednull,则默认指向全局window

  3. 三者都可以传参,但是apply是数组,而call是参数列表,且applycall是一次性传入参数,而bind可以分为多次传入

  4. bind是返回绑定this之后的函数,applycall 则是立即执行

是否了解 JavaScript 中的包装类型?

包装对象 : 就是当基本类型以对象的方式去使用时,JavaScript 会转换成对应的包装类型,相当于 new 一个对象,内容和基本类型的内容一样,然后当操作完成再去访问的时候,这个临时对象会被销毁,然后再访问时候就是 undefined

代码理解:

var str = 'hello';
str.number = 10; //假设我们想给字符串添加一个属性 number ,后台会有如下步骤
(var _str = new String('hello'); // 1 找到对应的包装对象类型,然后通过包装对象创建出一个和基本类型值相同的对象_str.number = 10; // 2 通过这个对象调用包装对象下的方法 但结果并没有被任何东西保存_str =null; // 3 这个对象又被销毁
)
console.log(str.number); // undefined  当执行到这一句的时候,因为基本类型本来没有属性,后台又会重新重复上面的步骤
(var str = new String('hello');// 1 找到基本包装对象,然后又新开辟一个内存,创建一个值为 hello 对象str.number = undefined;// 2 因为包装对象下面没有 number 这个属性,所以又会重新添加,因为没有值,所以值是未定义;然后弹出结果str =null; // 3 这个对象又被销毁
)
http://www.lryc.cn/news/18450.html

相关文章:

  • 按关键词搜索,商品详情采集,API接口
  • C++的纯虚函数使用与接口实现
  • Exception has occurred: ModuleNotFoundErrorNo module named ‘urllib3‘【已解决】
  • CSS 盒子模型【快速掌握知识点】
  • 公网远程连接Oracle数据库【内网穿透】
  • 国内售价仅10元的鸭子滑梯玩具TK卖到20美元,相关视频获400万+播放!
  • 直播平台的视频美颜sdk是什么?
  • 实现Vue组件库
  • 面试 | 移位妙解递归乘法【细节决定成败】
  • 项目缓存问题处理
  • DS期末复习卷(八)
  • 第50讲:SQL优化之LIMIT分页查询的优化
  • 做独立开发者,能在AppStore赚到多少钱?
  • CSS 基础【快速掌握知识点】
  • Linux 驱动基础
  • linux 共享内存操作(shm_open、mmap、编译链接库:-lz -lrt -lm -lc都是什么库)
  • 做出改变:农业科技和区块链在为地球的未来而战中的力量
  • 树莓派介绍
  • [神经网络]基干网络之VGG、ShuffleNet
  • Java 日期时间与正则表达式,超详细整理,适合新手入门
  • 用Netty实现物联网04:自定义通信协议
  • 「smardaten」上架钉钉应用中心!让进步再一次发生
  • 3、Maven安装
  • tkinter
  • Servlet笔记(6):HTTP状态码
  • RocketMQ 延迟队列
  • 【精准计时】北斗GPS卫星时钟同步改变精准计时年代
  • 【C#基础】C# 面向对象编程
  • 数据结构与算法入门
  • 【OpenAI】基于 Gym-CarRacing 的自动驾驶练习项目 | 路径训练功能的实现 | GYM-Box2D CarRacing