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

10个非常基础的Javascript面试问题

根据MDN,JavaScript(通常缩写为JS)是一种轻量级的,解释性的,面向对象的语言,具有一流的功能,并且最著名的是Web页面的脚本语言,但它也用于许多非浏览器环境中。...它是一种基于原型的多范式脚本语言,它是动态的,并支持面向对象,命令式和函数式编程样式。 2.什么是DOM DOM代表文档对象模型。加载网页后,浏览器会使用HTML和CSS文件创建一个DOM。...几乎每个浏览器都有一个JavaScript引擎。V8是其中最受欢迎的。Chrome使用V8引擎。另一方面,Firefox使用Spider-Monkey引擎。 4....因为2和“ 2”的值相等,但是它们的类型不同。 5.Null(空值)与Undefined(未定义) 通常,null表示空值和不存在的值,而undefined表示已声明但尚未定义的值。...所有声明(函数,var,let,const和class)都在JavaScript中吊起,而var声明使用undefined初始化,但是let和const声明保持未初始化。

67410

如何避免 JavaScript 模块化中的函数未定义陷阱

早期的 JavaScript 文件通常以全局脚本的形式加载,每个文件中的代码彼此共享全局作用域,容易造成命名冲突和依赖管理混乱。...但是,当将普通 JavaScript 文件转换为模块时,我们可能会发现一些函数突然“消失”了,即浏览器控制台报错提示函数未定义。...例如,像 pageLoad 这样在普通脚本中可以正常工作的函数,转为 ES6 模块后,在浏览器或其他模块中调用时,可能会抛出未定义的错误: Uncaught ReferenceError: pageLoad...普通 JavaScript 文件中,所有的代码都在全局作用域执行,这意味着函数、变量和对象默认会附加到全局对象(在浏览器中是 window 对象)上。...以下是模块和普通脚本的关键区别: 普通脚本的全局作用域:在非模块化文件中,所有定义的变量和函数都会自动成为全局对象(window)的一部分,因此像 pageLoad 这样的函数可以直接被 window.onload

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

    你真的了解回调?

    几乎node中的所有内容都使用回调函数。它们不是由node发明的,它们只是JavaScript语言的一部分 回调函数是异步执行或稍后执行的函数。...函数,并给它一个错误(如果有错误)和文件内容 我们上面未定义的原因是我们的代码中没有任何逻辑告诉console.log语句等到readFile语句完成后才打印出数字 如果你想要一次又一次地执行或稍后执行一些代码...然后,它必须使用磁头读取数据,并通过层将其发送回你的JavaScript程序。给readFile一个函数(称为回调函数),它将在从文件系统中检索到数据后调用它。...它将检索到的数据放入JavaScript变量中,并用该变量调用函数(回调函数)。在这种情况下,该变量称为fileContents,因为它包含读取的文件的内容 想一想餐厅示例。...只有函数可以被调用,所以如果你传入除函数以外的任何东西,它将会导致错误 当一个函数被javascript调用时,该函数中的代码将立即执行。

    87930

    node.js实现BigPipe详解

    HTML 作为父模版的数据”,指的就是这样,temp.s1 和 temp.s2 两个方法会生成 s1.jade 和 s2.jade 两个文件的 HTML 代码,然后把这两段代码作为 layout.jade...在接下来的优化之前,我们加入 jquery 库并把 css 样式放到外部文件,顺便,把之后我们会用到的浏览器端使用 jade 模板所需要的 runtime.js 文件也加入进来,在包含 app.js 的目录下运行.../node_modules/jade/runtime.min.js jade.js 并且把 layout.jade 中的 style 标签里的代码拿出来放到 static/style.css 里,然后把...这样就能在浏览器加载静态文件的同时,node 服务器这边等待异步调用的结果了,我们先删除 layout.jade 中的这 section 这两行: section#s1!=s1 section#s2!...至此,我们就完成了一个最简单的 BigPipe 技术实现的网页。 需要注意的是,要写入的网页片段有 script 标签的情况,如将 s1.jade 改为: h1 Partial 1 .content!

    2K60

    【前端面试题】03—200+道常见JavaScript基础面试题上(附答案)

    同源策略是客户端脚本(尤其是 JavaScript)的重要安全度量标准。它最早出自Netscape Navigator2.0,目的是防止某个文档或脚本从多个不同源装载。...34、在 JavaScript中读取文件的方法是什么? 可以通过如下方式读取服务器中的文件内容。...(2)将所有小于“基准”的元素,都移到“基准”的左边;将所有大于“基准”的元素,都移到“基准”的右边。...未定义的变量是在程序中声明但尚未给出任何值的变量如果程序尝试读取未定义变量的值,则返回未定义的值60.:如何编写可动态添加新元素的代码? 下面给出一段示例代码 用时传递参数“0”。 void(0)用于调用另一种方法而不刷新页面。 76、如何强制页面加载 JavaScript中的其他页面?

    4.7K10

    浏览器架构学习

    在从事前端开发过程中,浏览器作为最重要的开发环境,浏览器基础是是前端开发人员必须掌握的基础知识点,它贯穿着前端的整个网络体系。对浏览器原理的了解,决定着编写前端代码性能的上限。...Render Tree,调用UI Backend提供的接口绘制每个节点 3.2 JavaScript 引擎线程 JS引擎线程负责解析Javascript脚本,运行代码 JS引擎一直等待着任务队列中任务的到来...a) 减少 JavaScript 加载对 DOM 渲染的影响(将 JavaScript 代码的加载逻辑放在 HTML 文件的尾部,减少对渲染引擎呈现工作的影响; b) 避免重排,减少重绘(避免白屏,或者交互过程中的卡顿...来执行动画之类的视觉变化,但这种做法的问题是,回调将在帧中的某个时点运行,可能刚好在末尾,而这可能经常会使我们丢失帧,导致卡顿) 3.3 浏览器定时触发器线程 浏览器定时计数器并不是由 JavaScript...3.5 浏览器 http 异步请求线程 在 XMLHttpRequest 在连接后是通过浏览器新开一个线程请求, 将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件放到 JavaScript

    1.3K30

    你 JavaScript 正在泄漏内存而你却不知道

    定时器和回调 2.定时器和回调函数 JavaScript提供了内置函数,允许在特定的时间段后异步执行代码(使用 setTimeout)或以规律的间隔执行(使用 setInterval)。...但与其他JavaScript功能一样,如果不仔细管理,它们可能会成为内存泄漏的来源。 原因:当你将事件监听器附加到DOM元素时,它在该函数(通常是闭包)和该元素之间创建了一个绑定。...分离的DOM元素 文档对象模型(DOM)是网页上所有元素的分层表示。当你修改DOM,例如通过删除元素,但仍然在JavaScript中持有对该元素的引用,你就已经创建了所谓的 “分离的DOM元素” 。...原因:当从DOM中删除元素但仍有指向它们的JavaScript引用时,会创建分离的DOM元素。这些引用阻止垃圾回收器回收这些元素占用的内存。...元素的引用 通过在从DOM中删除 listItem 后使 listItem 引用为null,我们确保垃圾回收器可以回收已删除元素占用的内存。

    15321

    2020回顾-个人web分享JavaScript面试题附加回答

    3.在script标签中defer和async属性的区别 一般情况下,脚本的下载和执行将会按照文档的先后顺序同步执行,当 脚本下载和执行 的时候,文档解析会被阻塞,在 脚本下载和执行 完成之后文档才会往下继续进行解析..."> // 加载后续文档的过程和js脚本的加载是并行进行的,js脚本的执行需要等到文档所有元素解析完成之后,DOMContentLoaded事件触发执行之前 当加载的js脚本有多个的时候...(当html解析过程中,遇到defer属性,就会异步加载该js文件,不会中断HTML文档的解析,当整个HTML解析完成后,回头再来解析该js文件) 当有defer属性时,脚本的加载过程 和 文档加载 是...延迟脚本在JavaScript中有什么作用 默认情况下,在页面加载期间,HTML 代码的解析将暂停,知道脚本停止执行。...在JavaScript中读取文件的方法是什么 读取服务器中的文件内容 function readAjaxFile(url) { // 创建xhr var xhr = new XMLHttpRequest

    1.6K70

    ES2017 异步函数现已正式可用

    异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks、generators 或 promise 中包含你的逻辑。...Promise 是在 ES6 中引入的,并促使在编写 JavaScript 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。...回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响应。同时,这也是JS的基础。...它主要的优点就是可以将队列事件以一种直观的方式链接在一起。虽然这个示例清晰易懂,但是还是用到了回调。Promise 只是让回调显得比较简单和更加直观。...代码从 API 调用中记录了数据。 这种方式的好处就是非常直观。编写代码的方式就是大脑思考的方式,告诉脚本在需要的地方暂停。

    73140

    ES2017异步函数现已正式可用

    异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks、generators 或 promise 中包含你的逻辑。...Promise 是在 ES6 中引入的,并促使在编写 JavaScript 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。...回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响应。同时,这也是JS的基础。...它主要的优点就是可以将队列事件以一种直观的方式链接在一起。虽然这个示例清晰易懂,但是还是用到了回调。Promise 只是让回调显得比较简单和更加直观。...代码从 API 调用中记录了数据。 这种方式的好处就是非常直观。编写代码的方式就是大脑思考的方式,告诉脚本在需要的地方暂停。

    39810

    Node.js的介绍

    也就是说,这个库的意图是基于JavaScript的查询。 查询的目标是什么?答案是DOM(文档对象模型)结构中的Node(节点)。...一个网页就是一个html文档,而网页上的所有内容都是节点,包括文档节点、元素节点、文本节点、注释节点、属性节点等等。...ajax的基本流程可以概括为:页面上js脚本实例化一个XMLHttpRequest对象,设置好服务器端的url、必要的查询参数、回调函数之后,向服务器发出请求,服务器在处理请求之后将处理结果返回给页面,...Node.js使用的V8引擎实际上就是Google的Chrome浏览器使用的Javascript引擎(因为V8引擎是开源的),并进行了模块扩展。...另外还有一个重要的应用领域就是前端自动化,包括代码的预编译/转换(如使用Babel将ECMAScript 6的代码转换为低版本的es代码,将sass/less的样式表文件编译为传统的css文件)、语法检查

    1.4K00

    Express与常用中间件的使用

    )定义的,router代表一个由express.Router()创建的对象,在路由对象中可定义多个路由规则,而当我们的路由只有一条规则时,可直接用一个回调作为简写,也可直接使用app.get( ) 或app.post...模板引擎jade的使用 jade是nodejs的模板引擎,它的特点是破坏式,并且强依赖,它省略了html中尖括号,采用了严格的缩进格式,划分了层次结构,提高了可阅读性。...关于jade的语法: (1). 注释 jade 支持两种注释,单行注释和多行注释,每种注释支持两种模式:输出到源文件和不输出到源文件,差别在于多了一个 -。 单行输出注释和单行不输出注释: ?...为了方便修改常用属性 style,Jade接收一个类似JavaScript对象类型的参数 ? 解析生成的HTML如下: ?...(10). include 引用 实现高度复用的一种方式是将代码片段保存到不同文件中,然后在需要的地方导入这些片段,为此,Jade 提供了 include 指令 head 代码片段: ?

    3.3K10

    如何优化你的超大型React应用

    err)=>{ console.log('监听端口号3000成功') } }) 客户端收到一个HTML文件,和若干个CSS文件,以及多个javaScript文件 用户输入了url...服务端渲染本质,在服务端把代码运行一次,将数据提前请求回来,返回运行后的html文件,客户端接到文件后,拉取js代码,代码注水,然后显示,脱水,js接管页面。...激活事件的处理函数中,主要操作是清理旧版本的 Service Worker 脚本中使用资源。...所以,只有当页面刷新后,之前不受 Service Worker 控制的页面才有可能被控制起来。 直接上代码,存储所有js文件和图片 //实际的存储根据自身需要,并不是越多越好。...~ 普通的脚本 给script标签,加上async标签,遇到此标签,先去请求,但是不阻塞解析html等文件~,请求回来就立马加载 给script标签,加上defer标签,延迟加载,但是必须在所有脚本加载完毕后才会加载它

    2.1K50

    Js面试题__附答案

    负无穷大是JavaScript中的一个数字,可以通过将负数除以零来得到。 5、如何将JavaScript代码分解成几行吗?...6、什么是未声明和未定义的变量? 未声明的变量是程序中不存在且未声明的变量。如果程序尝试读取未声明变量的值,则会遇到运行时错误。未定义的变量是在程序中声明但尚未给出任何值的变量。...25、什么是JavaScript Cookie? Cookie是用来存储计算机中的小型测试文件,当用户访问网站以存储他们需要的信息时,它将被创建。 26、解释JavaScript中的pop()方法?...默认情况下,在页面加载期间,HTML代码的解析将暂停,直到脚本停止执行。这意味着,如果服务器速度较慢或者脚本特别沉重,则会导致网页延迟。在使用Deferred时,脚本会延迟执行直到HTML解析器运行。...在innerHTML中没有验证的余地,因此,更容易在文档中插入错误代码,从而使网页不稳定。 57、如何在不支持JavaScript的旧浏览器中隐藏JavaScript代码?

    8.9K30

    在nodejs中事件循环分析

    我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行...JavaScript中几乎所有的I/O基元都是非阻塞的,如网络请求、文件系统操作等。...在等待95毫秒时,fs.readFile()完成读取文件,并将需要10毫秒才能完成的回调添加到轮询队列中并执行。...poll 当个v8引擎将js代码解析后传入libuv引擎后,循环首先进入poll阶段,这个阶段有两个主要功能: 计算它应该阻止和轮询 I/O 的时间 处理轮询队列中的事件。...有两种情况poll阶段会终止执行poll queue中的下一个回调: 所有回调执行完毕 执行数超过了node的限制。

    4K00
    领券