前端es6面试题

1.声明变量:

let 不允许在相同作用域内,重复声明同一个变量。
const 声明一个只读的常量。一旦声明,常量的值就不能改变。

2.变量解构赋值:

默认值 默认值可以引用解构赋值的其他变量,但该变量必须已经声明。
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
解构失败,变量的值等于undefined
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象
函数参数的解构也可以使用默认值。

3.箭头函数:

箭头函数的分类:1.单语句,单参数 2.单语句,多参数 3.多语句,多参数.

4.Symbol

S6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)

5.forEach()

forEach(): 没有返回值,本质上等同于 for 循环,对每一项执行 function 函数。即map是返回一个新数组,原数组不变,forEach 是改变原数组。

6.Rest:

Rest 参数接受函数的多余参数,组成一个数组,放在形参的rest参数只能写在最后,前面用…标识Spread操作符(…),也称作展开操作符,作用是将可迭代的(Iterable)对象进行展开。

7.模板字符串:

模板字符串使用反引号 () 来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(${})的占位符。占位符中的表达式和周围的文本会一起传递给一个默认函数,该函数负责将所有的部分连接起来,如果一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串,该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以通过该函数来对模板字符串进行操作处理。在模版字符串内使用反引号(`)时,需要在它前面加转义符(\)。

8.class:

S6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

9.class继承:

Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后对其加工,加上子类自己的实例属性和方法,如果不调用super方法,子类就得不到this对象。

10.super关键字

super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同.
第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。
第二种情况,super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。

11.类的prototype属性和_proto_属性

子类的_prop_属性,表示构造函数的继承,总是指向父类。
子类prototype属性的_prop_属性,表示方法的继承,总是指向父类的prototype属性。

12.Typeof

typeof运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回’object’,有时我们需要判断该实例是否为某个对象的实例,那么这个时候需要用到instanceof运算符,后续记录instanceof运算符的相关用法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我将根据您的要求回答您的问题。现在让我们来看一些关于 CommonJS 和 ES6面试题。 1. 什么是 CommonJS 和 ES6? CommonJS 是一种模块化规范,用于在服务器端和客户端 JavaScript 应用程序中定义模块。它定义了模块的导入和导出规则,使得模块可以在应用程序中重用。ES6(ECMAScript 2015)是 JavaScript 的一个版本,它引入了很多新的语言特性和功能,包括模块化机制。 2. CommonJS 和 ES6 模块化规范之间有什么区别? CommonJS 是一种同步加载模块的规范,而 ES6 则是一种异步加载模块的规范。在 CommonJS 中,模块的导入和导出是通过 require() 和 module.exports 或 exports 来实现的,而在 ES6 中则是通过 import 和 export 语句来实现的。此外,ES6 还支持静态分析,这意味着编译器可以在编译时确定哪些模块将被导入和导出,以及它们的依赖关系。 3. ES6 的模块化规范有哪些优点? ES6 的模块化规范具有以下优点: - 易于维护和调试:ES6 模块化的导入和导出语句更加清晰和简洁,使得代码更易于维护和调试。 - 静态分析:ES6 模块化规范可以在编译时进行静态分析,这使得编译器可以优化代码并检测潜在的错误。 - 更好的命名空间管理:ES6 模块化规范通过使用命名空间来管理模块,从而避免了全局命名空间污染的问题。 - 支持循环依赖:ES6 模块化规范支持循环依赖,这意味着模块可以相互依赖而不会导致死循环。 4. CommonJS 的模块化规范有哪些缺点? CommonJS 的模块化规范有以下缺点: - 同步加载:由于 CommonJS 使用同步加载模块的方式,因此会导致应用程序的启动时间变慢。 - 无法进行静态分析:由于 CommonJS 的模块化规范是动态的,因此编译器无法在编译时确定模块的依赖关系,这会导致一些潜在的错误。 - 无法进行优化:由于 CommonJS 使用动态加载模块的方式,因此编译器无法对模块进行优化,这会导致应用程序的性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值