前端面试 75 道题,看完的人少之又少 (中)( 五 )
const employee = {firstName: "Marko",lastName: "Polo",position: "Software Developer",yearHired: 2017};
从对象获取属性 , 早期方法是创建一个与对象属性同名的变量 。 这种方法很麻烦 , 因为我们要为每个属性创建一个新变量 。 假设我们有一个大对象 , 它有很多属性和方法 , 用这种方法提取属性会很麻烦 。
var firstName = employee.firstName;var lastName = employee.lastName;var position = employee.position;var yearHired = employee.yearHired;
使用解构方式语法就变得简洁多了:
{ firstName, lastName, position, yearHired } = employee;
我们还可以为属性取别名:
let { firstName: fName, lastName: lName, position, yearHired } = employee;
当然如果属性值为 undefined 时 , 我们还可以指定默认值:
let { firstName = "Mark", lastName: lName, position, yearHired } = employee;
47. 什么是 ES6 模块?模块使我们能够将代码基础分割成多个文件 , 以获得更高的可维护性 , 并且避免将所有代码放在一个大文件中 。 在 ES6 支持模块之前 , 有两个流行的模块 。
- CommonJS-Node.js
- AMD(异步模块定义)-浏览器
导出
使用 ES5 (CommonJS)
// 使用 ES5 CommonJS - helpers.jsexports.isNull = function (val) {return val === null;}exports.isUndefined = function (val) {return val === undefined;}exports.isNullOrUndefined = function (val) {return exports.isNull(val) || exports.isUndefined(val);}
使用 ES6 模块// 使用 ES6 Modules - helpers.jsexport function isNull(val){return val === null;}export function isUndefined(val) {return val === undefined;}export function isNullOrUndefined(val) {return isNull(val) || isUndefined(val);}
在另一个文件中导入函数// 使用 ES5 (CommonJS) - index.jsconst helpers = require('./helpers.js'); // helpers is an objectconst isNull = helpers.isNull;const isUndefined = helpers.isUndefined;const isNullOrUndefined = helpers.isNullOrUndefined;// or if your environment supports Destructuringconst { isNull, isUndefined, isNullOrUndefined } = require('./helpers.js');-------------------------------------------------------// ES6 Modules - index.jsimport * as helpers from './helpers.js'; // helpers is an object// or import { isNull, isUndefined, isNullOrUndefined as isValid } from './helpers.js';// using "as" for renaming named exports
在文件中导出单个功能或默认导出使用 ES5 (CommonJS)
// 使用 ES5 (CommonJS) - index.jsclass Helpers {static isNull(val) {return val === null;}static isUndefined(val) {return val === undefined;}static isNullOrUndefined(val) {return this.isNull(val) || this.isUndefined(val);}}module.exports = Helpers;
使用ES6 Modules// 使用 ES6 Modules - helpers.jsclass Helpers {static isNull(val) {return val === null;}static isUndefined(val) {return val === undefined;}static isNullOrUndefined(val) {return this.isNull(val) || this.isUndefined(val);}}export default Helpers
从另一个文件导入单个功能使用ES5 (CommonJS)
// 使用 ES5 (CommonJS) - index.jsconst Helpers = require('./helpers.js'); console.log(Helpers.isNull(null));
使用 ES6 Modulesimport Helpers from '.helpers.js'console.log(Helpers.isNull(null));
48. 什么是Set对象 , 它是如何工作的?Set 对象允许你存储任何类型的唯一值 , 无论是原始值或者是对象引用 。我们可以使用Set构造函数创建Set实例 。
const set1 = new Set();const set2 = new Set(["a","b","c","d","d","e"]);
我们可以使用add方法向Set实例中添加一个新值 , 因为add方法返回Set对象 , 所以我们可以以链式的方式再次使用add 。 如果一个值已经存在于Set对象中 , 那么它将不再被添加 。set2.add("f");set2.add("g").add("h").add("i").add("j").add("k").add("k");// 后一个“k”不会被添加到set对象中 , 因为它已经存在了
我们可以使用has方法检查Set实例中是否存在特定的值 。set2.has("a") // trueset2.has("z") // true
我们可以使用size属性获得Set实例的长度 。set2.size // returns 10
可以使用clear方法删除 Set 中的数据 。set2.clear();
我们可以使用Set对象来删除数组中重复的元素 。const numbers = [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 5];const uniqueNums = [...new Set(numbers)]; // [1,2,3,4,5,6,7,8]
49. 什么是回调函数?回调函数是一段可执行的代码段 , 它作为一个参数传递给其他的代码 , 其作用是在需要的时候方便调用这段(回调函数)代码 。
- 三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经
- java面试题整理
- 面试官:问你一个,Spring事务是如何传播的?
- 程序员面试主要看哪些 该怎么准备面试内容
- 震惊!京东T4大佬面试整整三个月,才写了两份java面试笔记
- 2020金九银十安卓面试题来袭(猿辅导+斗鱼+字节+腾讯)
- 「8」进大厂必须掌握的面试题-Java面试-异常和线程
- 安卓面试必备的JVM虚拟机制详解,看完之后简历上多一个技能
- 成功拿下阿里P6的offer后,总结出大厂面试的血泪史
- 面试官:聊聊 etcd 中的 Raft 吧