首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一次有意义的前端面试总结

ES6的语法实现数组去重等,通过这次面试我也发现了我的很多知识盲区。...糟糕的自我介绍 笔试结束后HR拿着我的简历和做的笔试题指引我来到了一个会议室,当我在会议室坐下后不久,会议室里进来了一位女士,她就是我今天面试的面试官,互相打了个招呼后,她首先让我做自我介绍,然后我便说道我叫...面试官:你知道 JavaScript 中的事件绑定方式吗? 我:onclick。 面试官:onclick不能算是事件绑定的方式。 我:addEventListener。 面试官:还有吗?...我:知道,在 JavaScript 中的继承就是通过原型实现的。 面试官:那你说说 JavaScript 中实现继承的方式有哪些? 我:巴拉巴拉一大堆。 面试官:知道数据的存储方式吗?...面试官:知道跨域吗? 我:知道。 面试官:如何解决跨域问题? 我:使用JSONP和在服务器端设置CORS。 面试官:看你简历中还提到了你会组件化开发,那你介绍一下你的项目中哪里设使用了组件化开发?

42820

前端工程化发展历史

你的意思是 ES6?由于每个版本相当于之前版本的超集,所以如果使用 ES2016+,之前版本 ES6、ES5 所有的特性你就都可以使用了。 好吧,那我可以用 ES6 来编程吗?...你需要做很多的前置动作才能让项目准备好,压缩资源、混淆代码、内联 css 、延迟加载 js,还有… 明白了,明白了。所以如果不用 CDN 去加载库的话,你会怎么做?...虽然 TypeScript 是 javaScript 的超集,但它还需要编译成 javaScript 才能在浏览器运行。而另一种工具 Flow 就仅仅做类型检查,无需编译。 等等,Flow 是啥?...Haskell 语言已经这么做很多年了,但不要和我提 Elm 那些人。幸运的是,原生 javaScript 也可以通过 Ramda 这样的库进行函数式编程。...也许会用 ES6 支持的原生模版字符串。 那我捋捋。只有 ES6 支持? 对的。 那我需要用 Babel 来兼容更多的浏览器。 对的。 我需要从 npm 加载它的核心库? 对的。

78920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【译】开始学习React - 概览和演示教程

    当我刚开始学习JavaScript的时候,我就听说了React,但我承认看了它一眼,它吓到我了。我看到了看起来一堆HTML和CSS的混合思想,这不是我们一直努力避免的事情吗?...你会注意到,我们使用的是className而不是class。这是我们的第一个提示,此处编写的代码是JavaScript,而不是HTML。...JSX中的属性和方法是驼峰式的 - onclick将变为onClick 自动闭合标签必须以斜杆结尾 - 例如 JavaScript表达式也可以使用大括号将包括变量,函数和属性的内容嵌入JSX...将组件分成文件不是强制性的,但是如果不这样做的话,应用程序将变得笨拙和混乱。 类组件 让我们创建另一个组件。我们将创建一个表格。创建一个Table.js,并用以下数据填充它。...onClick={this.submitForm} /> 就是这样!该应用程序已经完成了。我们可以在表中创建,添加和删除用户。

    11.2K20

    横扫 JS 面试核心考点

    作用域与作用域链 ES6 到来JavaScript 有全局作用域、函数作用域和块级作用域(ES6新增)。我们可以这样理解:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。...对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。...DOM操作 当网页被加载时,浏览器会创建页面的文档对象模型(DOM),我们可以认为 DOM 就是 JS 能识别的 HTML 结构,一个普通的 JS 对象或者数组。...横扫 Javascript 面试核心考点 模块化 几种常见模块化规范的简介: CommonJS规范主要用于服务端编程,加载模块是同步的,这并不适合在浏览器环境,因为同步意味着阻塞加载,浏览器资源是异步加载的...不过,依赖SPM 打包,模块的加载逻辑偏重 ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

    1.5K03

    react思维

    接下来做少许分析: import React, { Component } from 'react' Component作为所有组件的基类,提供了很多组件共有的功能,下面这行代码,使用ES6语法来创建一个...,这样的bug很难被发现。...虽然DOM操作也只是一些简单的JavaScript语句,但是DOM操作会引起浏览器对网页进行重新布局,重新绘制,这就是一个比JavaScript语句执行慢很多的过程。...如果用jquery的开发一个表格,性能测试时我们拿出1000条数据,请求加载,1秒后早已经从后端拿到数据。但页面可能半分钟都没有响应,陷入假死状态。...面对这样的性能,以jquery作为开发语言 在react的实现方式中,VirutalDOM不会触及浏览器的部分,只是存在于JavaScript空间的树形结构,每次自上而下渲染React组件时,会对比这一次产生的

    1.3K20

    【面试】386- JavaScript 面试 20 个核心考点

    2.作用域与作用域链 ES6 到来JavaScript 有全局作用域、函数作用域和块级作用域(ES6新增)。我们可以这样理解:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。...3.闭包是什么 闭包这个概念也是JavaScript中比较抽象的概念,我个人理解,闭包是就是函数中的函数(其他语言不能这样),里面的函数可以访问外面函数的变量,外面的变量的是这个内部函数的一部分。...对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。...五、DOM操作与BOM操作 1.DOM操作 当网页被加载时,浏览器会创建页面的文档对象模型(DOM),我们可以认为 DOM 就是 JS 能识别的 HTML 结构,一个普通的 JS 对象或者数组。...不过,依赖SPM 打包,模块的加载逻辑偏重 ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案

    46810

    JavaScript 高级应用(第二弹)

    1.1 call 最实用的 call 的用法,简单来说,我们有个函数,一般都是通过函数名直接调用执行,另一种方式就是通过函数名.call() 来调用 这样做就是改变了函数的上下文,即改变了 this 的指向...从名称上来看,它在 JavaScript 中叫做 “回调函数”?那么什 么又是“回调函数” 呢?“回调函数” 又要怎么触发呢?它有返回值吗?...举个最简单的例子,网络请求,大家都熟悉吧,有时候网页内容加载不出来,我们就会按下键盘上的 F5 键,这个时候游览器就会把当前网页重新加载一般。...这里实际上是简写了,使用了 ES6 的箭头函数语法,直接把网络请求拿到的值,当成函数的参数传递给下游处理 一些内置的 JavaScript API 都可以看到 callback 的影子 // 第一个参数就是要处理的函数...这不就告诉了我们这个是怎么用的嘛 翻译过来,简单的说 forEach 函数,会接收三个参数,并且会 告诉 callbackfn 对数组中的每一个元素执行一次回调操作 所以这个 forEach 的案例告诉了我们什么

    63520

    JavaScript 面试 20 个核心考点

    2.作用域与作用域链 ES6 到来JavaScript 有全局作用域、函数作用域和块级作用域(ES6新增)。我们可以这样理解:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。...3.闭包是什么 闭包这个概念也是JavaScript中比较抽象的概念,我个人理解,闭包是就是函数中的函数(其他语言不能这样),里面的函数可以访问外面函数的变量,外面的变量的是这个内部函数的一部分。...对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。...五、DOM操作与BOM操作 1.DOM操作 当网页被加载时,浏览器会创建页面的文档对象模型(DOM),我们可以认为 DOM 就是 JS 能识别的 HTML 结构,一个普通的 JS 对象或者数组。...不过,依赖SPM 打包,模块的加载逻辑偏重 ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案 参考资料

    41010

    JavaScript 中 10 个需要掌握基础的问题

    else { ++i } } } 删除数组中索引i处的元素: 删除数组中索引i处的元素: array.splice(i, 1) 如果你想从数组中删除值为number的每个元素,可以这样做...window.location.replace("http://stackoverflow.com") // 模拟单击链接 window.kk = "http://stackoverflow.com" 你还可以这样做...(n - 1); // ... // 让它自己作为回调传递:: someFunction(shortcut); // ... } 在上面的例子中,我们可以对外部名称进行同样的操作,但是这样做太笨拙了...但是从2015年(ES6)开始,JavaScript已经有了ES6模块标准,可以在Node中导入模块。...上面这种动态加载都是异步执行的,这样可以提高网页的性能。 这意味着不能在动态加载下马上使用该资源,因为它可能还在加载。

    2.7K20

    Tree-Shaking性能优化实践 - 原理篇

    通过 tree-shaking,将没有使用的模块摇掉,这样来达到删除无用代码的目的。...Tree-shaking 是 DCE 的一种新的实现,Javascript同传统的编程语言不同的是,javascript绝大多数情况需要通过网络进行加载,然后执行,加载的文件大小越小,整体执行时间更短,...中是由谁做DCE呢?...其实也不是上面提到的三个工具,rollup,webpack,cc做的,而是著名的代码压缩优化工具uglify,uglify完成了javascript的DCE,下面通过一个实验来验证一下。...那也许你会问,难道rollup,webpack不能区分是定义Menu的proptotype 还是定义Array的proptotype吗?当然如果代码写成上面这种形式是可以区分的,如果我写成这样呢?

    18610

    Webpack插件按需加载组件_webpack懒加载

    所以,要实现懒加载,就得先将进行懒加载的子模块(子组件)分离出来。 懒加载前提的实现:ES6的动态地加载模块——import()。...依照webpack原本的打包规则打包项目,我们就无法确定子模块在打包出来的哪个JS文件中,而且子模块的代码会和其他代码混合在同一个文件中。这样就无法进行懒加载操作。...借助函数实现懒加载(按需加载) 首先,我们先来回顾一下JavaScript函数的特性。...这样就导致子组件的提前加载。...这样就可以实现Vue-router懒加载(按需加载)。 是不是非常简单!哈哈! 可能这里有人会疑惑,component可以接收一个function吗? 这确实可以的。不要被以往的观念束缚。

    1.5K20

    “类”设计模式和“原型”设计模式——“复制”和“委托”的差异

    ---- theme: smartblue 小引 JavaScript 技能持有者一定有问过这个问题: JavaScript 是面向对象语言吗?...但是可惜,你得不到这样简单的答案! 你大概了解一通之后,你会被告知: JavaScript 不是纯粹的面向对象语言! wtf!为什么是不纯粹?能不能纯粹一点?!我们喜欢纯粹,不喜欢混沌!...$elem.click( this.onClick.bind( this ) ); } onClick(evt) { console.log( "Button '"...总地来说,ES6 的 class 想伪装成一种很好的语法问题的解决方案,但是实际上却让问题更难解决而且让 JavaScript 更加难以理解。...最后,如果再被问道:JavaScript 是面向对象语言吗? 如果这篇文章看懂了,就可以围绕:“类设计模式”和“原型设计模式”来吹了。 如果本文没有看懂,就把下面的标答背下来吧......

    47320

    JS面向对象二:this原型链new原理

    情况3:某些API会专门提供一个参数,用来指定回调函数中的this 例如,我们可以重新设计一个可以指定this的setTimeout: function setTimeoutExt(cb, period...在ES6引入class关键字之前,我们常常把构造函数叫做类。说明2:用户自定义的函数通常既可以作为普通函数使用,又可以作为构造函数来制造对象。...ES6新增的class语法定义的函数只能作为构造函数,ES6新增的=>语法定义的箭头函数只能作为普通函数。 ....既然这样,那么我们可以把制造士兵的过程写成一个函数. ? 然后调用即可 ?...灰色的代码就是new()做的封装,不需要你做的事情 共有属性被new()统一叫做prototype ? new其实就是语法糖!

    2K30

    JavaScript 是如何工作的:模块的构建以及对应的打包工具

    打包 AMD 如果你正在使用 AMD,你需要使用像 RequireJS 或者 Curl 这样的 AMD 加载器。模块加载器(与模块打包工具不同)会动态加载程序需要运行的模块。...遗憾的是,因为浏览器对 ES6模 块的原生支持还不够完善,所以现阶段还需要我们做一些补充工作。 ?...更不用说它还会自动转换ES6模块(如果只是设置一个选项)并且能够从任何其他类型加载任何模块类型! 有了原生的 ES6 模块后,还需要模块打包吗?...对于日益普及的 ES6 模块,下面有一些有趣的观点: HTTP/2 会让模块打包过时吗? 对于 HTTP/1,每个TCP连接只允许一个请求。这就是为什么加载多个资源需要多个请求。...CommonJS、AMD 与 UMD 会被淘汰吗? 一旦 ES6 成为模块标准,我们还需要其他非原生模块规范吗? 我觉得还有。

    1.4K10

    js入门(ES6)---让网页动起来的js

    如何理解JS 我们之前讲了html入门,就像是做机器人的外壳,但是光有外壳,再好看也华而不实,也可以理解成你想要一个好看的机器人,同时也想它能做家务勤劳啥的 JavaScript是一种网络的脚本语言,一般用于...然后出现exe文件,再运行exe文件,就是直接编译成机器语言,但是js不是编译后运行,而是边运行边解释,不直接生成机器语言,先生产中间代码,然后由解释器边解释边运行 ECMAScript 6.0 简称ES6...重要的事情说三遍,多看文档 JavaScript ES6 JS—赋予网页生命 一个简单的小示例带你了解js的效果 首先,给网页一个"脸" ? <!...学习JS的方法 多学多练习多看文档 JavaScript手册 ES6教程   大家好,我是代码哈士奇,是一名软件学院网络工程的学生,因为我是“狗”,狗走千里吃肉。...后续会推出 前端:vue入门 vue开发小程序 等 后端: java入门 springboot入门等 服务器:mysql入门 服务器简单指令 云服务器运行项目 python:推荐不温卜火 一定要看哦

    2.4K30
    领券