【前端面试题】ES6基础知识(一)
一、ES6是什么,为什么要学习它?
ES6 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范,ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。ES6的诞生都意味着语言的完善,功能的加强。JS存在语言本身也有一些令人不满意的地方,JS语法过于松散,实现相同的功能,不同的人可能会写出不同的代码。
二、变量声明
1. let 命令
用于声明变量,用法与 var 类似;但禁止重复声明,let 不允许在相同作用域内,重复声明同一个变量。不存在变量提升(使用前,先声明); 暂时性死区,只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。与 var 的不同在于,用 let 声明的变量只在 let 命令所在的代码块 { }内有效。2.const 命令
定义一个只读的常量。常量的值不能改变(声明时进行初始化);禁止重复声明;不存在变量提升(养成良好习惯,先定义,后使用); 暂时性死区;变量不可修改,基本类型的话,值不可修改。引用类型的话,引用不可修改,引用的对象的属性可以修改; 声明后必须立刻赋值,否则会报错。使用 let、const 创建一个新的全局变量,不会在全局对象上创建属性。
3.let,var,const三者的区别
let是声明变量是块级作用域,只存在自身变量的块作用域内,不可以变量提升,有暂时性死区,先定义后使用。var是声明的变量,其作用域为该语句所在的函数内,可以变量提升。
const声明的是常量,在后面出现的代码中不能再修改该常量的值,先定义后使用。
let,const的声明的变量不属性顶层对象,返回undefined。
三、基本常识
1.for...in和for...of有什么区别?
for...in遍历数组的索引。for...of遍历数组元素。
2.箭头函数的this和普通函数的this的区别?
普通函数与调用者有关,箭头函数跟上下文有关。let fn = function () { return 123; }; let fn = () => 123;
3.Array的扩展方法map和filter相同点与区别?
map和filter不会对空数组进行检测,不会改变原始数组。map方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
filter创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。