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

37个JavaScript基本面试问题和解答(建议收藏)

好的。但是,如果在延迟0毫秒后记录3,这是否意味着它正在被立即记录?而且,如果是这样,不应该在4之前记录它,因为4是由后面的代码行记录的吗? 答案与正确理解JavaScript事件和时间有关。...为什么? (b) 提供一个或多个可按预期工作的替代实现。 答: (a) 无论用户点击哪个按钮,数字5将始终记录到控制台。...这里有几个观点可以让人们回答这个问题: 将数组传递给另一个数组的push()方法会将整个数组作为单个元素推入数组的末尾。...这里的基本问题是JavaScript(ECMAScript)是一种松散类型的语言,它对值执行自动类型转换以适应正在执行的操作。让我们来看看这是如何与上面的每个例子进行比较。...console.log(1 2 > 1); 第一条语句返回true,如预期的那样。 第二个返回false是因为引擎如何针对和>的操作符关联性工作。

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

    前端必备,25个最基本的JavaScript面试问题及答案

    对于这个问题,既简要又最重要的答案是,use strict 是一种在JavaScript代码运行时自动实行更严格解析和错误处理的方法。那些被忽略或默默失败了的代码错误,会产生错误或抛出异常。...要回答这个问题,你需要正确理解JavaScript的事件和时间设置。 浏览器有一个事件循环,会检查事件队列和处理未完成的事件。...(b)要让代码工作的关键是,通过传递到一个新创建的函数对象,在每次传递通过 for 循环时,捕捉到 i 值。...和Python一样,JavaScript标榜数组方法调用中的负数下标,例如 slice() 可作为引用数组末尾元素的方法:例如,-1下标表示数组中的最后一个元素,等等。...: "122" "32" "02" "112" "NaN2" NaN 原因是… 这里的根本问题是,JavaScript(ECMAScript)是一种弱类型语言,它可对值进行自动类型转换,以适应正在执行的操作

    93430

    一文彻底搞懂Events模块

    前言 为什么写这篇文章? 清楚的记得刚找node工作和面试官聊到了事件循环,然后面试官问事件是如何产生的?什么情况下产生事件。。。 Events 在哪些场景应用到了?...「就给干警发送出一条信号,实际上小偷不可能告诉干警我有偷东西」,干警收到信号,出击抓小偷。...EventEmitter 与 发布/订阅模式的关系 Node.js 中的 EventEmitter 模块就是用了发布/订阅这种设计模式,发布/订阅 模式在主体与观察者之间引入消息调度中心,主体和观察者之间完全透明...on 方法,该方法用于订阅事件(这里 on 和 addListener 说明下),Node.js 源码中这样把它们俩赋值了下,我也不太懂为什么?...事件循环中的事件是什么情况下产生的?什么情况下触发的? 我为什么要把这个单独写成一个小标题来讲,因为发现网上好多文章都是错的,或者不明确,给大家造成了误导。

    95820

    【offer 收割计划】你知道为什么 reducer 最好是一个纯函数吗?

    ,或者在哪些题目遇到了问题,这样我们可以一起关注一下这些题目,大家共同进步!...,slice 用来截取数组或字符串 splice 会改变原数组,slice 不会改变原数组 三、为什么有了 indexOf 方法,在 ES7 中还要新增 includes 方法呢?...在之前的 indexOf 方法中存在着一些问题,主要是在于 NaN 的判断上,indexOf 没有办法去判断数组中是否存在 NaN 值,当我们需要判断数组中是否存在 NaN 值的时候,我们需要采用 includes...state 总结 通过这几道面试题,我们复习了 JavaScript 中的循环语句,也区分了 splice 和 slice 而又深入理解 redux 中 reducer 的工作原理,这对我自己来说提升还是很大的...可能文中有理解不到位的地方,欢迎在评论区指出,我们一起进步,共同成长!

    1K20

    JavaScript 中的稀疏数组世界

    在这篇文章中,我将谈论:✅ 什么决定了数组的长度✅ 稀疏数组和稠密数组的区别✅ 如何处理稀疏数组神秘数组长度的案例还记得第一次你以为自己掌握了数组吗?我也是。我以为数组的长度是由定义的元素数量决定的。...JavaScript 数组也是如此运作的:在索引 2 处标记一个位置意味着在它之前有两个其他的位置(在索引 0 和 1 处),从而使数组的长度为 3。...我们的停车管理员 - map() 函数 - 忽略它们,径直走过它们。一个问题一个合理的问题是:如果空白位置被忽略了,为什么它们不被从新数组中删除呢?...因为在我们的停车管理员完成巡逻后,停车场(我们的数组)必须保持相同的大小!类似地,JavaScript 的 map() 方法将始终返回与原始数组相同长度的新数组。...我们之所以这样做,是为了学习。 稀疏数组遇上 filter()我们难道不应该过滤掉空白位置吗?当然可以!您可以使用 filter() 方法过滤掉空白位置。记得 map() 如何忽略它们吗?

    22230

    JavaScript基本知识点——带你逐步解开JS的神秘面纱

    我们在控制台中进行JavaScript代码的调试,也可以在源代码中选择断点来进行错误检测 JavaScript须知 在介绍JavaScript的其他内容之前我需要先把一些基本内容告诉你们: JavaScript...的所有数据类型都由var和let定义 var 全局变量 let 局部变量 JavaScript的输出方法: alert() 打开页面将会弹出的内容 console.log() 在控制台输出的内容 JavaScript...,所以在JavaScript与HTML和CSS不同,我们可以在JavaScript中定义数据变量来协助我们书写代码 下面我先为大家介绍JavaScript的基本数据类型(与Java相似但有所不同,下面我只为...NaN和浮点数问题: NaN无法通过===进行比较 NaN === NaN 的运算结果为false isNaN(NaN)才可以得出NaN的判定结果 浮点数计算无法通过===进行比较 1/3 ===...的流程控制和Java相差不大 if判断与Java完全相同 while循环与Java完全相同 for原版循环与Java完全相同 下面我们介绍三种新的for循环: forEach()循环 var age =

    89120

    14万字 | 400多道JavaScript 面试题及详细答案(建议收藏)

    14万字 | 400 多道 JavaScript 面试题 有答案 为了方便手机阅览,我在必要位置都放了回顶部或者回对应问题的链接 编号 问题 1 在 JavaScript 中创建对象的可行方法有哪些...180 为什么我需要使用freeze 方法? 181 你如何检测浏览器语言首选项? 182 如何使用javascript将字符串转换为标题大小写?...326 postmessage目标源作为通配符有什么问题? 327 你如何避免收到来自攻击者的 postMessages? 328 我可以完全避免使用 postMessages 吗?...369 是否可以将 CSS 添加到控制台消息? 370 控制台对象的dir方法的目的是什么? 371 是否可以在控制台中调试 HTML 元素? 372 如何使用控制台对象以表格格式显示数据?...您如何避免收到来自攻击者的 postMessages 由于侦听器侦听任何消息,攻击者可以通过从攻击者的来源发送消息来欺骗应用程序,这给人的印象是接收者从实际发送者的窗口收到了消息。

    12.7K20

    【JavaScript】JavaScript开篇基础(1)

    ❤️❤️前言~ Hello, Hello~ 亲爱的朋友们,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏。如果你对我的内容感兴趣,记得关注我以便不错过每一篇精彩。...当然,如果在阅读中发现任何问题或疑问,我非常欢迎你在评论区留言指正️️。让我们共同努力,一起进步! 加油,一起CHIN UP!...null 在数值运算中会被转换为 0,而 undefined 在运算中会被转换为 NaN 字符串如果里面全是数字就直接变为对应的数字型数字,如果有字符则变为NaN....9.循环结构和分支结构 js的循环结构和分支结构 和java的一模一样,就只有一个不同点。 这里的相等是指完全相等:数据类型和值都完全相等。...10.数组 数组的创建 最简单的方法是使用数组字面量(用方括号 [] 包围元素)来创建数组: let numbers = new Array(1, 2, 3, 4, 5); 这种方法直接在代码中指定数组的元素

    7410

    一文彻底搞懂Events模块

    前言 为什么写这篇文章? 清楚的记得刚找node工作和面试官聊到了事件循环,然后面试官问事件是如何产生的?什么情况下产生事件。。。 Events 在哪些场景应用到了?...「就给干警发送出一条信号,实际上小偷不可能告诉干警我有偷东西」,干警收到信号,出击抓小偷。...EventEmitter 与 发布/订阅模式的关系 Node.js 中的 EventEmitter 模块就是用了发布/订阅这种设计模式,发布/订阅 模式在主体与观察者之间引入消息调度中心,主体和观察者之间完全透明...on 方法,该方法用于订阅事件(这里 on 和 addListener 说明下),Node.js 源码中这样把它们俩赋值了下,我也不太懂为什么?...事件循环中的事件是什么情况下产生的?什么情况下触发的? 我为什么要把这个单独写成一个小标题来讲,因为发现网上好多文章都是错的,或者不明确,给大家造成了误导。

    88831

    java iso8601 PT1M,iso8601

    2019-12-01 04:30:17 我正在尝试按日期和时间以ISO 8601格式对PHP中的数组进行排序.我仍在尝试掌握PHP,并尝试了许多关于堆栈溢出的解决方案,而我只是无法确定正确的功能.希望这是一个简单的答案...// “2014-07-24T00:19:37.439Z” 是否存在行为与Javascript匹配的Python函数?...解决方法:这对我有用,它使用正则表达式来确保日期是您想要的格式,然后尝试解析日期并重新创建它以确保输出与输入匹配: $date = ’20 参见英文答案 > Convert timestamps with...干杯解决方法: String d 需要有关将具有以下结构的ISO 8601日期转换为javascript的帮助/提示....v2)库,这将允许我解析和比较可能在不同单位的ISO 8601持续时间 理想情况下,它可以与标准运算符一起使用(a< b)但是我会很喜欢a.compare(b)或者.

    14.1K180

    大话 JavaScript(Speaking JavaScript):第一章到第五章

    当你开始学习 JavaScript 时,我建议你在学习其他语言之前先在其中编程一段时间。这样,你就不必一次学习所有内容,这可能会让人困惑。...此示例在控制台上打印数组arr的所有元素: for (var i=0; i < arr.length; i++) { console.log(arr[i]); } while循环在其条件成立时继续循环其主体...循环结束后,i的值为 5,这就是为什么数组中的所有函数都返回该值。...因此,在其他语言中学习语言特性的地方,你需要在 JavaScript 中学习模式和解决方法。另一方面,JavaScript 包括非正统的特性(如原型继承和对象属性)。...因此,网景内部激烈争论的一个问题是为什么 Web 需要两种编程语言:Java 和一种脚本语言。

    37510

    大话 JavaScript(Speaking JavaScript):第十一章到第十五章

    JavaScript 有两个零,一个正零和一个负零,因为数字的符号和大小存储在不同的位置。在本书的大部分内容中,我假设只有一个零,并且您几乎从不在 JavaScript 中看到有两个零。...除非完整的复合语句可以写在一行中,否则我建议使用一个块。 循环 本节探讨了 JavaScript 的循环语句。...与循环一起使用的机制 以下机制可以与所有循环一起使用: break ⟦«label»⟧ 退出循环。 continue ⟦«label»⟧ 停止当前循环迭代,并立即继续下一个。...with语句 本节解释了with语句在 JavaScript 中的工作原理以及为什么不鼓励使用它。...这意味着前面数组的值是这样产生的: > parseInt('1', 0) 1 > parseInt('2', 1) NaN > parseInt('3', 2) NaN 总之,对于您不确定其签名的函数和方法要小心

    62310

    关于JavaScript计时器的知识学习

    该接口使其所有元素在主 JavaScript 全局可用。这就是您可以直接在浏览器控制台中执行 setTimeout 的原因。...有些人可能认为这是一个糟糕的面试问题,为什么要知道这个问题呢?!...作为一名 JavaScript 开发人员,我认为你应该知道这一点,因为如果你不这样做,那可能表明你并不完全理解 V8(和其他虚拟机)如何与浏览器和 Node 交互。...使用 node 命令执行 solution1.js 文件将打印出我们挑战的要求,4 秒后的第一条消息和 8 秒后的第二条消息。 重复执行一个函数 如果我要求您每隔 4 秒打印一条消息怎么办?...1e10 是 10的十次方,所以循环是一个 10 亿个循环(基本上模拟繁忙的 CPU)。当此循环正在滴答时,节点无法执行任何操作。

    1.6K40

    JSON 和 JavaScript 中字符串化的怪象

    前言 在我刚开始学习web开发时,JSON是看起来很简单的一个东西。因为JSON字符串看起来就像一个文本,JavaScript对象的的最小子集。...在我职业生涯的早期,我从来没有花时间去好好研究这种数据格式。我仅仅只是使用JSON.stringify和JSON.parse,直到出现意外的错误。...在这篇文章中,我想: 总结一下我在JavaScript中使用JSON(更确切的说是JSON.stringifyAPI)时遇到的怪事 通过从头开始实现JSON.stringify的简化版本,来加深我对JSON...然而事实上,它的目的是允许不同语言编写的程序有效地沟通。 在类似的问题上,Crockford也坦言,JavaScript提供的两个内置API可以与JSON一起工作。...下一个合乎逻辑的问题是,在JavaScript的上下文中,当我们说一个数据类型不被JSON支持时,到底是什么意思?

    1.7K10

    深入理解 JavaScript 回调函数

    “模式”一词表示解决软件开发中常见问题的某种行之有效的方法。最好将回调函数作为回调模式去使用。 为什么我们需要回调 客户端 JavaScript 在浏览器中运行,并且浏览器的主进程是单线程事件循环。...获取并显示消息的函数 在上面的代码片段中,首先执行 getMessage()函数,然后执行 displayMessage() 。两者都在浏览器的控制台窗口中显示了一条消息,并且都立即执行。...该函数会暂停两秒钟,然后在控制台窗口中显示消息“ Hi,there”。 “显示的消息”将被显示在浏览器的控制台窗口中。在这种情况下,首先,我们需要等待 getMessage() 函数。...回调的工作方式 让我解释一下前面的例子在幕后发生的事。 从上一个例子可以看到,在 getMessage() 函数中,我们传递了两个参数。...回调与闭包 闭包 用技术术语来说,闭包是捆绑在一起的函数的组合,引用了其周围的状态。

    1.7K20

    【JavaWeb】80:js基础详解

    今天是刘小爱自学Java的第80天。 感谢你的观看,谢谢你。 话不多说,开始今天的学习: ? JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的。...100和true相加结果竟然是101,这在Java中会直接报错,因为不确定结果是什么数据类型。...此外,未定义数据类型逻辑判断也为false,在算术运算中的NaN作为逻辑判断时也为false。 我就不一一演示了。...3参数arguments 事实上在js中有一个专门的数组arguments,用来接收调用时的实际参数: ? js中的数组是可变的,所以可以使用这种方式来接受,当然也可以使用for循环来处理。...我个人对于实参和形参的理解,就是将实参赋值给形参再参与运算,这样方便记忆也好理解。 4返回值和方法重载 ? ①返回值 js在定义函数时是不用说明返回值的,如果有返回值,直接return即可。

    1.5K30

    14个你可能不知道的JavaScript调试技巧

    问题:我怎么才能收到你们公众号平台的推送文章呢? 熟悉工具可以让工具在工作中发挥出更大的作用。...一起来看 大多数技巧都适用于Chrome控制台和Firefox, 尽管还有很多其他的调试工具,但大部分也适用。 1. debugger 除了, 是我们最喜欢、快速且肮脏的调试工具。...使用和测试循环 要得知某些代码的执行时间,特别是调试缓慢循环时,非常有用。 甚至可以通过给方法传入不同参数,来设置多个定时器。来看看它是怎么运行的: 运行产生了一下结果: 6....在控制台中使用,当到达传入的函数时,代码将停止。 这个调试方法很快, 但缺点是不适用于私有或匿名函数。但除了私有和匿名函数, 这可能是找到调试函数的最快方法。(注意:这个函数和函数不是同一个东西。)...下面我用不同的属性发起的两次请求: 14. 中断节点更改 DOM是一个有趣的东西。有时候它会改变,你并不知道为什么。 但是,当您调试JavaScript时,Chrome可以在DOM元素发生更改时暂停。

    1.7K90

    174道JavaScript 面试知识点总结(上)

    《JavaScript 学习笔记:数组随机排序》 34、javascript 创建对象的几种方式?...《Window 对象》 《DOM 与 BOM 分别是什么,有何关联?》 《JavaScript 学习总结(三)BOM 和 DOM 详解》 41、写一个通用的事件侦听器函数。...相关知识点: 同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。...异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。...如何解决这个问题? 当计算机计算 0.1+0.2 的时候,实际上计算的是这两个数字在计算机里所存储的二进制,0.1 和 0.2 在转换为二进制表示的时候会出现位数无限循环的情况。

    1.7K10
    领券