你需要知道面试中的10个JavaScript概念

2023-10-26

翻译原文出处:10 JavaScript concepts you need to know for interviews

之前不是闹得沸沸扬扬的大漠穷秋文章《为什么只会Vue的都是前端小白?》;甚至大多数回头看了,也就会jQuery和Vue这两个库;也就大部分在运用着这两个库。我这里不是吐槽和开骂什么的;在之前jQuery年代,很多面试官都会问除了用jQuery来实现,能不能改写原生JavaScript来处理。也大部分人在看jQuery源码,甚至穷出不尽的底层库。

自我学习

目前有成千上万的年轻人在学习JavaScript和Web开发,希望获得一份工作。通常,自我学习的年轻人对JavaScript语言本身不够深入了解,在这方面留下了一片空白。

实际上令人惊讶的是,只需要了解非常小的一部分语言就可以来制作复杂的网页。在自己的网站上创建网站的人往往不太了解JavaScript的基本原理。大多数年轻人基本都是通过Bootstrap、jQuery及插件、Backbone或Angular等库和框架直接就搞定,而且还能构建复杂应用。

使用基本技能来避免复杂的主题和实现功能是相当容易的。在不理解被复制的代码的情况下,通过依赖Stack Overflow、github等网站放出的demo,甚至一些建站网站来创建自己的网站是比较轻松的。

如果您想要掌握更多的JavaScript面试相关资讯,请查看“ 提升你的JS:中级JavaScript的权威指南

面试

那么问题来了,测试您对JavaScript深浅理解的问题,正是许多科技公司在面试中所要求的。当一个求职者只是刚好能通过面试,但如果不够深入了解该语言的本质,这是很槽糕的。

以下是Web开发中常见的概念需要重要的,前提是你已经了解了循环、函数和回调等基础知识。

概念

1、值和引用 — 了解对象、数组和函数是通过引用进行复制和传递的;了解原始元素是按值复制和传递的。
2、作用域 — 了解全局作用域,函数作用域和块作用域之间的差异。了解哪些变量在哪里可以用。了解JavaScript引擎如何执行变量查找。新出的ES6语法中申明变量关键字let、const对变量作用域的影响。
3、变量提升 — 了解变量和函数声明被提升到可用范围的顶部;了解函数表达式没有提升。
4、闭包 — 知道闭包是指可以访问其他函数作用域内变量的函数。知道这样做可以使我们做什么,例如创建私有变量,动态函数生成等。
5、this — 知道this的绑定规则。知道它是如何工作的,知道如何找出它在函数中与之相等的,并且知道为什么它是有用的。
6、new — 知道new如何与面向对象编程有关,知道使用new调用的函数会发生什么,通过函数的prototype属性了解如何使用new继承生成的对象。
7、apply,call,bind — 知道这几个函数如何工作的,知道如何使用它们,知道它们做了什么。
8、原型和继承 — 了解JavaScript中的继承通过prototype链进行工作,了解如何通过函数和对象设置继承,以及new函数帮我们来实现它。知道__proto__和原型属性是什么以及它们的作用。
9、异步JS — 了解事件循环。了解浏览器如何处理用户输入,Web请求和一般事件;知道如何识别并正确实现异步代码。了解JavaScript是异步单线程的。
10、高阶函数 — 了解函数是JavaScript中的一级对象,这意味着什么;知道从另一个函数返回函数是完全合法的。了解闭包和高阶函数允许我们使用的情况。

更多资源

如果上面的知识点包含的链接还不够,那么你可以上其它网站找资源,可以帮助您学习这些概念。

我个人创建了 提升你的JS:中级JavaScript的权威指南,以帮助开发者提高他们的知识;它涵盖了所有这些概念和更多。

这里是我已经阅读或看过的资源,至少有一些可以推荐。

Good luck for your interviews!!!!(这句你懂得)

如果你发现这很有用,就请您点个赞,转发给其他人也看到它(这是博主原话)。

随时查看我最近的一些写的文章:

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你需要知道面试中的10个JavaScript概念 的相关文章

  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 如何打开新选项卡并更改当前页面

  • 有没有办法动态更改 jqGrid 的单元格值?

    这个问题可能已经被问过很多次了 但我想知道是否可以动态更改 jqgrid 的单元格值 我基本上有一个网格 它通过 JSON 字符串加载数据 在特定列的某些行上 该值可能为 null 因此 预先知道哪个行 ID 是一个问题 然后能够将 nul
  • JavaScript 字符串中的脚本标签[重复]

    这个问题在这里已经有答案了 我遇到一个问题 即 JavaScript 中带引号的字符串内有结束脚本标记 并且它正在杀死脚本 我认为这不是预期的行为 可以在这里看到这样的示例 http jsbin com oqepe edit http js
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • 使用 jQuery inputmask 插件范围 0-100

    如何创建 0 到 100 范围内的掩码 document ready function masked inputmask 您可以使用jquery inputmask regex extensions js为了那个原因 你可以找到带有所有扩展
  • EmberJS:对象作为查询参数来刷新模型

    我遵循了查询参数指南 http guides emberjs com v1 11 0 routing query params http guides emberjs com v1 11 0 routing query params 而且效
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • vuejs中如何获取组件编译后的html内容

    我有一个这样的组件
  • 如何跨多个文件跨越 javascript 命名空间?

    我永远忽略了javascript 几年前我开始使用 jQuery 这样我就可以过得去 但随着我开始更多地进行 TDD 我昨天决定真正深入研究 javascript 之后可能还有咖啡脚本 在我的 ASP NET Web 窗体应用程序中 我有很

随机推荐

  • 面向对象(带参实例)——加减乘除运算

    实现加减乘除运算 代码如下 public class Daican int num1 int num2 public double cal String opr public double cal String opr int num1 i
  • 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)

    注 本博客是基于奥本海姆 信号与系统 第二版编写 主要是为了自己学习的复习与加深 一 一阶与二阶连续时间系统 一 一阶连续时间系统 1 对于一个一阶系统 其微分方程往往表示成下列形式 区中t是一个系数 相应的一阶系统的频率响应是 其单位冲激
  • 锁的升级过程

    再此之前我们需要先了解一下什么是cas和aba 一 CAS 我们使用多线程来访问一个变量的时候 会出现相应的并发的情况 所以我们需要对这个变量进行加锁操作 但是我们也可以不进行加锁 我们先将查询到了的变量值放到内存中 然后将相应的然后我们要
  • ROS的ros_canopen调试

    Ros canopen是ros支持can通信的package 链接 http wiki ros org ros canopen distro indigo Ros canopen包结构如下 SocketCAN是一组开源的CAN驱动程序和网络
  • Linux内核中网络数据包的接收, 涉及到select/poll/epoll

    转自 https blog csdn net dog250 article details 50528280 与网络数据包的发送不同 网络收包是异步的的 因为你不确定谁会在什么时候突然发一个网络包给你 因此这个网络收包逻辑其实包含两件事 1
  • mysql 登录hang_MySQL客户端连接登入hang住原因分析

    作者 八怪 高鹏 中亦科技数据库专家 原文 https www jianshu com p 93b69955344b 一 问题来源 问题来自一位朋友 如下 mysql客户端无法登陆 查看服务器负载没有发现高负载信息 通过pstack查看线程
  • 普通人是否能从ChatGPT中分一杯羹?

    ChatGPT3 0刚刚推出 最开始的时候 人们只是将ChatGPT看作一个很会聊天的机器人 无论问题多么天马行空 它的答案看上去都有理有据 后来 像打开潘多拉魔盒一样 很多人开始拿它编大纲 撰写文案 编代码 创作剧本 写法律文书 还可以出
  • 服务器数据库怎么导入数据库文件路径,服务器数据库导入sql文件路径

    服务器数据库导入sql文件路径 内容精选 换一换 下载MySQL源码包 includes Boost Headers cd home wget https dev mysql com get Downloads MySQL 5 7 mysq
  • 多个线程访问共享对象和数据的方式

    一 如果每个线程执行的代码相同 可以使用同一个Runnable 对象 这个Runnable对象中有那个共享的数据 例如买票系统就可以这样做 代码如下 package com thread class ShareDataTest1 publi
  • 编译器架构的王者LLVM——(9)栈式符号表的构建

    LLVM平台 短短几年间 改变了众多编程语言的走向 也催生了一大批具有特色的编程语言的出现 不愧为编译器架构的王者 也荣获2012年ACM软件系统奖 题记 版权声明 本文为 西风逍遥游 原创文章 转载请注明出处 西风世界 http blog
  • Centos升级openssh的正确方式

    准备工作 升级ssh可能会造成服务器无法连接 如果不能直接操作服务器 请开启telnet或者vnc 查看openssl版本 openssl version 在这里下载1 0 2版本 https www openssl org source
  • Spring的AOP五大通知注解

    通知注解 声明方法 在方法前加入通知注解 指定要拦截的对象信息 注意 代表任意修饰符号 任意值 AOP五大通知注解 Before 前置通知 在方法执行之前执行 After 后置通知 在方法执行之后执行 无论是否发生异常 还不能访问目标方法执
  • C++复合模式:Compound Pattern

    模式通常被一起使用 并被组合在同一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式 以解决一般或重复发生的问题 注 是为了解决一般或重复发生的问题 而不是简单的认为使用了多个模式就是复合模式 绝不要为了使用模式而使用模式 具体问
  • 基于 Flask 的简易 Mock 平台

    https testerhome com topics 14753
  • Linux——md5命令

    文章目录 介绍 选项 使用案例 生成文件md5值 文本模式或二进制模式 md5值重定向 重定向追加 md5校验 实际开发场景 介绍 md5sum命令用于生成和校验文件的md5值 它会逐位对文件的内容进行校验 是文件的内容 与文件名无关 也就
  • KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法

    今天在编程的时候遇到了这个问题 在网上查找了好多办法 都没有什么效果通过ctrl f 发现自己并没有重新定义 而且这两个 c文件都是移植且可以用的 然后我就准备一点一点的删mian c中的内容 看看是哪的问题 当我删掉 include lc
  • 前后端时间比较大小

    前端 this createdTime response createdTime 获取到时间的值 const onLineDate 2023 04 11 23 00 00 if moment this createdTime gt mome
  • JAVA整理总结

    文章目录 JavaSE 面向对象的特点是什么 和equals的区别 String str i 与 String str new String i 一样吗 String 类的常用方法都有那些 Integer a 127 与 Integer b
  • 去除json解析后字符串中的双引号

    const jsonString c 1691715434770 e 253402300799000 v admin const parsedObject JSON parse jsonString 去掉双引号 const valueWit
  • 你需要知道面试中的10个JavaScript概念

    翻译原文出处 10 JavaScript concepts you need to know for interviews 之前不是闹得沸沸扬扬的大漠穷秋文章 为什么只会Vue的都是前端小白 甚至大多数回头看了 也就会jQuery和Vue这