不仅仅是面试,JavaScript 开发者都应该知道的十个概念

筱蕊a 7年前
   <p><img src="https://simg.open-open.com/show/8c8bb4524101dea45098ee0a07c5b8df.jpg"></p>    <h2>自学</h2>    <p>现在学习 JavaScript 和 Web 开发的人很多,他们都希望能凭此获得一份工作。然而,自学常常会使学习者对 JavaScript 语言本身的理解存在知识盲点。</p>    <p>实际上,令人感到惊讶的是,他们只需要掌握很少的语言知识就能制作复杂的网页,然而这样通常不能很好掌握 JavaScript 的基础知识。</p>    <p>使用基本的技能来实现功能和避免复杂的需求是相当容易的,通过依赖 Stack Overflow,而不理解复制来的代码以创建一个网站也是十分容易。</p>    <h2>面试</h2>    <p>但问题是,许多技术公司在面试中提问时,目的是检验你对 JavaScript 是否真正理解。当求职者只是对 JavaScript 有浅显的认识,而不是深刻理解这门语言,面试官会很快清楚是什么情况。</p>    <p>下面是一些 Web 开发面试中常见的概念。当然,我们假设你已经熟知诸如循环、函数和回调这些基本概念。</p>    <h2>概念</h2>    <h3><a href="/misc/goto?guid=4959754364201669785" rel="nofollow,noindex">1. 原始值和引用值(Value vs. Reference)</a></h3>    <p>理解对象、数组和函数是如何复制和传递到函数中的。了解引用值是被复制了什么,理解原始值是通过复制值来进行复制和传递的。</p>    <h3><a href="/misc/goto?guid=4959754364290741758" rel="nofollow,noindex">2. 域(Scope)</a></h3>    <p>理解全局域、函数域以及块级作用域之间的区别。了解变量在哪里是可用的,了解 JavaScript 引擎如何执行变量查找。</p>    <h3><a href="/misc/goto?guid=4959754364372330881" rel="nofollow,noindex">3. 提升(Hoisting)</a></h3>    <p>认识到变量和函数的声明会被提升到声明所在的上下文,即在变量的作用域内,不管变量在何处声明,都会被提升到作用域的顶部,但是变量初始化的顺序不变。认识到函数表达式不会被提升。</p>    <h3><a href="/misc/goto?guid=4959754364462941161" rel="nofollow,noindex">4. 闭包(Closures)</a></h3>    <p>认识到一个函数会保留对在其内部创建的域的访问,认识到这些可以让我们做什么,例如数据隐藏、内存化以及动态函数生成。</p>    <h3><a href="/misc/goto?guid=4959754364544467809" rel="nofollow,noindex">5. this</a></h3>    <p>理解 this 绑定的规则。知道它的工作机制,知道在函数中如何判断它等同于什么,并且认识到为什么它是有用的。</p>    <h3><a href="/misc/goto?guid=4959754364635995283" rel="nofollow,noindex">6. new</a></h3>    <p>认识到它如何与面向对象编程产生联系。了解通过 new 调用的函数会发生什么。理解通过使用 new 来自函数 prototype 属性的 <em>继承</em> 的对象是如何生成的。</p>    <h3><a href="/misc/goto?guid=4959754364720878534" rel="nofollow,noindex">7. apply</a> <a href="/misc/goto?guid=4959754364720878534" rel="nofollow,noindex">, </a> <a href="/misc/goto?guid=4959754364720878534" rel="nofollow,noindex">call</a> <a href="/misc/goto?guid=4959754364720878534" rel="nofollow,noindex">, </a> <a href="/misc/goto?guid=4959754364720878534" rel="nofollow,noindex">bind</a></h3>    <p>了解这些函数是如何工作的,了解如何使用它们。了解它们对 this 做了什么。</p>    <h3><a href="/misc/goto?guid=4959754364845778603" rel="nofollow,noindex">8. 原型和继承(Prototypes & Inheritance)</a></h3>    <p>理解 JavaScript 中的继承通过 [[Prototype]] 链进行工作。理解如何通过函数和对象设置继承,以及  new 是如何帮助我们实现的。了解  __proto__ 和  prototype 属性是什么,以及它们的作用。</p>    <h3><a href="https://www.油Tube.com/watch?v=8aGhZQkoFbQ&t=948s" rel="nofollow,noindex">9. 异步 JS(Asynchronous JS)</a></h3>    <p>理解事件循环,理解浏览器是如何处理用户输入、Web 请求和一般事件的。知道如何识别并正确实现异步代码。理解 JavaScript 中异步和单线程分别是怎样的。.</p>    <h3><a href="/misc/goto?guid=4959754365011647100" rel="nofollow,noindex">10. 高阶函数(Higher Order Functions)</a></h3>    <p>理解这些函数是 JavaScript 中的第一类对象以及这意味着什么,了解从另一个函数返回函数是完全合法的。了解闭包和高阶函数允许我们使用的技术。</p>    <p>大家还有什么补充的吗,在评论区和大家分享吧~</p>    <p> </p>    <p>来自:https://my.oschina.net/editorial-story/blog/1529543</p>    <p> </p>