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

看完这几道 JavaScript 面试题,让你与考官对答如流(上)

具体更多规则可以对参考之前文章: JS 相等和全等操作符转化过程一直很迷惑,直到有了这份算法 15. 为什么 JS 中比较两个相似的对象时返回 false?...基本类型JS 通过值对它们进行比较,而在对象JS 通过引用或存储变量内存地址对它们进行比较。...,但不能在函数外部访问。...{}声明变量(let,const)只能在其中访问。...因此,当我们循环后该数组调用其中一个函数时,它会打印5,因为我们得到i的当前值为5,我们可以访问它,因为它是全局变量。 因为闭包在创建变量时会保留该变量引用而不是其值。

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

Ajax设置请求和接收响应、自己封装简易jQuery.Ajax、回调函数

XMLHttpRequest.setRequestHeader() 另外需要注意是,如果设置西请求方法为get 并且设置了请求体(第四部分),谷歌浏览器中看不到请求体,不报错但是不显示 示例代码:...3 客户端/服务器模型 客户端使用js设置请求四个部分, 服务器用nodejs也可以设置响应四个部分 ? ? 为什么要三次握手? 三次握手: A:能连你了吗?...因为服务器端代码为: else { response.statusCode = 404 response.setHeader('Content-Type', 'text/html;...,ajax函数传了一个successFN,failFn函数作为参数,但是执行时候是别的地方执行(request.onreadystatechange里) if(request.readyState...把这个函数给别人,自己执行,让别人执行,就是callback 回调:使用方代码执行,只传一个函数,回来再执行 回调就是传一个函数,自己执行,传到别的地方让他在那里执行函数!

2.6K50

关于JavaScript计时器知识学习

定时器由浏览器实现,不同浏览器实现也会有所不同,Node.js 也实现了自己定时器。 浏览器,主计时器函数是 Window 接口一部分,它具有一些其他函数和对象。...setTimeout 第二个参数是延迟(以 ms 为单位)。这就是为什么将 4 乘以 1000 使其成为 4 秒 setTimeout 第一个参数是执行将被延迟函数。...条件: 您只能在解决方案定义一个函数,其中包括内联函数。这意味着多个 setTimeout 调用必须使用完全相同函数。...这样,该函数可以根据我们传递给它任何延迟值打印不同消息。 然后两个 setTimeout 调用中使用了 theOneFunc ,一个 4 秒后触发,另一个 8 秒后触发。...解答 因为延迟量是此挑战变量,所以我们不能在这里使用 setInterval ,但我们可以递归调用中使用 setTimeout 手动创建间隔执行。

1.6K40

Vue 组件实战

Vue我们可以使用插值来展示数据,插值普通函数,只要页面一刷新,函数就会重新运算,不管和函数有关没关值都会变,函数也会重新计算,导致运行效率降低; 那么我们可以将自定义函数写在computed来控制...) } } }) 我们可以发现只有和属性相关才会打印,如果下面输入内容只是打印了普通函数,就算函数内和mytext1...}) 局部组件 写在components里是局部组件,位置被限制,只能再局部使用 比如如下例子,Top组件只能在只能再id为app标签(div)...内使用, Top组件内如果想再定义子组件,只能在该组件内templatediv内使用 <!...,实现跳转,使用component标签,用is属性绑定,指定哪个显示哪个 keep-alive:通过keep-alive标签实现组件销毁,保留原来输入内容 <!

87430

初识js闭包_Js闭包变量理解

今天就简单说说目前所理解闭包,当然可能不完全正确,但是相信会给你一定启发。   首先我们来谈谈js变量,如果你不知道为什么要说这些,那么你根本没有掌握js基础,建议回头复习。...} 5 a();   局部变量:函数中用var定义变量,只能在函数访问这个变量,函数外部访问不了。...defined 注意点1:函数如果不使用var定义变量那么js引擎会自动添加成全局变量。...,如果包裹起来,js会把它当作函数声明来处理,如果包裹起来就是表达式,还没有看懂就上网查吧。...,而是保存到了内存,所以我们多次打印bi()就成了1、2、3 下面来说一个闭包使用场景吧。

3.3K20

day 81 Vue学习一之vue初识

a=1赋值,所以打印出来不报错,而是打印undefined,let不存在这个问题,let只自己代码块中生效 { //js里面大括号表示一个代码块 var a = 1;...引用了vue之后,我们直接打开引用了vue这个html文件,然后浏览器调试窗口输入Vue,你会发现它就是一个构造函数,也就是咱们js里面实例化一个类时写法: ?...,这个大家陌生,这个v-text就是辅助我们使用模板语法     v-html相当于innerHtml     模板语法data写个标签例子: ?...因为块级作用域内声明函数类似于let,对作用域之外没有影响。但是,如果你真的 ES6 浏览器运行一下上面的代码,是会报错,这是为什么呢?...原来,如果改变了块级作用域内声明函数处理规则,显然会对老代码产生很大影响。为了减轻因此产生兼容问题,ES6 附录 B里面规定,浏览器实现可以遵守上面的规定,有自己行为方式。

2.6K20

前端day11-JS学习笔记(构造函数、对象API、作用域、arguments关键字)

new Date(); /*时间日期打印*/ //2.打印当前完整时间: (1)默认显示当前电脑时区时间 (2)打印date时会自动转为字符串 date.toString()...函数外面声明 2.局部作用域:变量只能在函数内部起作用 局部变量:函数内部声明 3.2-作用域链 1.作用域链是怎么来 默认情况下,我们js代码处于全局作用域,当我们声明一个函数时,此时函数体会开辟一个局部作用域...,其他任何语句都不可以 3.3-js预解析 为什么要有预解析机制?...,实际上调用时候无论我们传入多少实参程序都不会报错 为了防止这种情况:函数有一个arguments关键字来获取所有的实参 3.arguments特点 1.只能在函数体中使用,函数外使用会报错 2....js对象外观上唯一区别: json对象属性和值都需要双引号,js对象不需要 为什么要有json对象:因为实际开发,后台并不是只是为了前端服务,他们还需要为android和ios服务 如果直接返回一个

80710

12 - JavaScript 作用域​

根据变量或函数声明位置它们或许只能在个别 JavaScript 代码块可用在其他地方则不行。我们 JavaScript 中会接触到三种作用域。...Global Scope 当一个变量/方法 script 或 JS 文件(不属于任何一个函数)声明 并且可以那个文件或者 HTML 文档引用到,它就是被声明了全局作用域。...Function or Local Scope 当在一个函数声明一个变量时,它只能在函数中使用外面无法使用。因为它作用域只归属于函数。...} sayLastName(); console.log(first); // Parwinder 即使能在函数获取 last ,但依旧可以函数获取全局变量 first 。...在这个例子,当我们 sayLastName 打印 first 时,JS 引擎首先会在函数作用域中查找,之后全局作用域中查找。若任何作用域中都没有找到,则会报一个引用错误。

55730

❤ 就这?TypeScript其实并不难!(建议收藏)❤

文件,它是严格模式,是tsconfig.json配置 有了这个文件,我们就可以我们终端输入以下命令运行文件 node helloWorld.js 可以发现被成功打印出来了~  03 TS变量类型那些事...) boolean (ts布尔值只有true和false两个) (0和nullts表示false了) var b:boolean = true var c:boolean =...所以说,为声明之前打印显示undefined 所以记住第一句打印是undefined,第二句打印函数体内声明变量 js早期只有局部变量和全局变量 但是比如我们大众语言,java,c++...因为它自动帮我们把let转译成了var 我们构建编译好js文件可以查到 我们尝试js文件,把var修改成let 我们会发现会报错,说明我们块级作用域还是起作用了 07 引用类型数组 我们之前讲都是值类型...元组可以我们ts赋值两种类型 开发,元祖还是比较少用,所以此处略 08 引用类型字符串 基本类型字符串:单引号或双引号字符引起来字符串 引用类型字符串:用new实例化String类型字符串

1.5K20

Vue之Router(三)

首先在 user 页面添加一个按钮,然后通过点击这个按钮来打印。 比如: 然后 main.js 文件打印 router 。...比如: 在看结果之前,小编有必要为大家说明一下 main.js 文件打印 router 就是index.js 文件 new 出来 VueRouter。...他们之间来龙去脉见下图: 下面小编分别对比 user.vue 和 main.js 打印结果: 此外小编来带大家伙看看源码,对 router 更加深入了解: 首先看到第一点: class VueRouter...比如: 2. route 还是刚刚 user.vue 页面,我们打印 this.$route 看看 可以很明显看到它们两个是不同东西。...比如: 我们先在 main.js 文件中使用 Vue原型 test 方法: Vue.prototype.test = function(){ console.log("test") } 然后

47810

Node.js学习笔记——认识nodejs、详解fs文件系统模块与path路径模块

为什么 JavaScript 可以浏览器中被执行 不同浏览器使用不同 JavaScript 解析引擎 Chrome 浏览器 => V8 Firefox 浏览器 => OdinMonkey...为什么 JavaScript 可以操作 DOM 和 BOM 每个浏览器都内置了 DOM、BOM 这样 API 函数,因此,浏览器 JavaScript 才可以调用它们 浏览器 JavaScript...,则 err 值为 错误对象,dataStr 值为 undefined console.log(err) console.log('-------') // 2.2 打印成功结果...解决方案:使用fs模块操作文件时,直接提供完整路径,不要提供.或…/开头相对路径,从而防止路径动态拼接问题。**注意js写完整路径要用//,不然会被当成转义字符处理。...path.basename(fpath, '.html') console.log(nameWithoutExt) // index path.extname(path) 可以获取路径扩展名部分

1.6K20

一看就懂var、let、const三者区别

这是参与「掘金日新计划 · 10 月更文挑战」第17天,点击查看活动详情 声明变量关键字汇总  JavaScript ,一共存在 3 种声明变量方式: var let const 之所以有 3... Global Scope 中用 var 声明了 a, checkscope 函数 Local Scope(本地作用域、函数作用域)打印出了 10,但是 Global Scope 打印变量...初始化值默认为 undefined //Global Scope var a; console.log(a); //undefined 上面代码 Global Scope 中用 var 声明了...至于 checkscope 函数变量 a 为什么输出 undefined,可以参阅《作用域和作用域链》章节。...const 用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改,无变量提升,不可以重复声明。 最初 JS 作用域有:全局作用域、函数作用域。没有块作用域概念。

47620

JS引擎执行机制event loop

这样想,JS为什么被设计成单线程应该就容易理解了吧。 (2) JS为什么需要异步? 场景描述: 如果JS不存在异步,只能自上而下执行,如果上一行解析时间很长,那么下面的代码就会被阻塞。...对于用户而言,阻塞就意味着"卡死",这样就导致了很差用户体验 所以,JS存在异步执行。 (3) JS单线程又是如何实现异步呢? 既然JS是单线程,只能在一条线程上执行,又是如何实现异步呢?...异步任务event table中注册函数,当满足触发条件后,被推入event queue 同步任务进入主线程后一直执行,直到主线程空闲时,才会去event queue查看是否有可执行异步任务,如果有就推入主进程...,放到主线程里 当 1、 3控制条被打印后,主线程去event queue(事件队列)里查看是否有可执行函数,执行setTimeout里函数 3.JSevent loop(2) 所以,上面关于...event loop就是JS执行机制理解,直到我遇到了下面这段代码 例2: setTimeout(function(){ console.log('定时器开始啦') }); new

1.7K40

多图生动详解浏览器与Node环境下Event Loop

为什么这段代码先打印了 3 ,再打印了 2呢?...那当然是JS所处运行环境提供了,而JS最主要两个运行环境就是:浏览器 和 Node,我们接下来也会基于这两个运行环境,对JS运行机制进行讲解 二、浏览器JavaScript 之所以JS能在浏览器运行...、multiply 函数 现在,我们来看一下这段代码执行过程,调用栈stack内部情况如何 这里,还有一种方式可以来验证一下调用栈存在以及其内容,我们来编写一段这样代码: function...三、Node.jsJavaScript 注: 此次讨论都是针对Node.js 11.x以上版本 本文分别讨论了JS浏览器环境和Node.js环境这两种情况,那自然是有所区别的,后者相对于前者过程分得更加细致...对于11.x 之后版本,虽然官网还没找到相关文字说明是这样,但通过无数次运行,暂且可以说是这样,若各位找到相关说明,可以留下评论) 同理,Node.js也有宏任务和微任务之分,我们来看一下常用都有哪些

64820

10 分钟理解 JS 引擎执行机制

同样,我们就结合现实场景,来回答这三个问题。 (1) JS为什么是单线程JS最初被设计用在浏览器,那么想象一下,如果浏览器JS是多线程。...(2) JS为什么需要异步? 场景描述: 如果JS不存在异步,只能自上而下执行,如果上一行解析时间很长,那么下面的代码就会被阻塞。...对于用户而言,阻塞就意味着"卡死",这样就导致了很差用户体验 所以,JS存在异步执行。 (3) JS单线程又是如何实现异步呢? 既然JS是单线程,只能在一条线程上执行,又是如何实现异步呢?...,放到主线程里 当 1、 3控制条被打印后,主线程去event queue(事件队列)里查看是否有可执行函数,执行setTimeout里函数。...3.JSevent loop(2) 所以,上面关于event loop就是JS执行机制理解,直到我遇到了下面这段代码。

1.6K91

Vue 生命周期函数

这里从描述可以知道以下几点: 处理data参数,例如:变更、修改、读取等等 处理methods方法,例如:执行方法 不能处理模板内容,例如:无法打印参数模板渲染结果,就是如果写一个插值表达式...浏览器显示如下: 1.4 mounted 此时,已经将编译好模板,挂载到了页面指定容器显示。那么现在上一个示例打印页面的插值表达式,应该是能够打印出渲染后值了。...写一个触发更新msg数据按钮,通过数据更新触发beforeUpdate()钩子函数,然后钩子函数打印「界面的msg数据」以及打印「内存msg数据」,这样就知道修改状态了。...// 如果要调用 methods 方法,或者操作 data 数据,最早,只能在 created 操作 }, beforeMount() { // 这是遇到第3...// console.log(`data msg 数据是:${this.msg}`); // 得出结论:当执行 beforeUpdate 时候,页面显示数据,还是旧

50120

75个JavaScript面试题集锦,内含解答,自测 JS 掌握程度

为什么调用这个函数时,代码`b`会变成一个全局变量? 40. ECMAScript是什么? 41. ES6或ECMAScript 2015有哪些新特性? 42....具体更多规则可以对参考之前文章: JS 相等和全等操作符转化过程一直很迷惑,直到有了这份算法 15. 为什么 JS 中比较两个相似的对象时返回 false?...基本类型JS 通过值对它们进行比较,而在对象JS 通过引用或存储变量内存地址对它们进行比较。...因此,当我们单击li元素时,它将打印5,因为这是稍后回调函数引用它时i值。...类(class)是 JS 编写构造函数新方法。它是使用构造函数语法糖,底层中使用仍然是原型和基于原型继承。

13K94
领券