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

经典JS试题

大部分人都会做错的经典JS试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到底在调用哪个函数?...这是一道非常典型的JS问题。其中嵌套了三层fun函数,搞清楚每层fun的函数是那个fun函数尤为重要。 可以先在纸上或其他地方写下你认为的结果,然后展开看看正确答案是什么? 答案 都答对了么?...如果都答对了恭喜你在js问题当中几乎没什么可以难住你了;如果没有答案,继续往下分析。 JS中有几种函数 首先,在此之前需要了解的是,在JS中函数可以分为两种,具名函数(命名函数)和匿名函数。...的有了更深入的了解。...关于什么是,网上的文章数不胜数,但理解什么是还是要在代码中自己去发现与领悟。 如果要我说什么是,我认为,广义上的就是指一个变量在他自身作用域的被使用了,就叫发生了

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

js

目录 的概念 的用途 代码实例 注意点 两个代码片段的对比 的概念 简单来说,就是定义在一个函数内部的函数 的用途 可以读取函数内部的变量 让这些变量的值始终保持在内存中...代码实例 function f1(){ var n = 999 // 匿名函数 fnAdd = function(){n += 1} // 一个...nAdd的值是一个匿名函数(anonymous function),而这个匿名函数本身也是一个。 函数调用相当于后面有两个括号,因为函数f1返回的是函数名f2。...注意点及解决方法 由于会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用,否则会造成网页的性能问题,在IE中可能导致内存泄露。...会在父函数外部,改变父函数内部变量的值。 解决方法:不要随便改变父函数内部变量的值。 返回时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

2.3K30

JS

JS用法给开发带来了极大的便利,它的使用方式非常自然,以至于很多同学并不很了解,却可以在实际开发中顺畅的使用了 例如下面的代码,给button添加一个点击事件,很多人经常这么写,实际上这就是一个...要了解,需要先了解下JS变量的作用域 变量的作用域无非就是两种:全局变量和局部变量 特点是 函数内部可以访问外部变量,函数外部不能访问函数内的变量 例如 ?...这个实现方式就是 什么是 其实就是将函数内部和函数外部连接起来的一座桥梁,可以让函数外部的代码访问函数内容变量,可以把简单理解成“定义在一个函数内部的函数” 包在子作用域中保存了一份在父级作用域取得的变量...,这些变量不会随父级作用域的销毁而销毁,因为他们已经常驻内存了 应用示例 (1)实现公共、私有作用域控制 既然可以对外提供访问内容变量的方式,就可以用这个特点实现类似 public private...原因 第一种方式出现错误,是因为在for循环结束后,变量item的值已经变为了最后一项,所以当点击事件执行时,读取的信息总是最后一项的信息 而第二个方式就是利用了会把父级变量保存到自己作用域的特点

4.2K40

JS

在理解以前.最好能先理解一下作用域链的含义,简单来说,作用域链就是函数在定义的时候创建的,用于寻找使用到的变量的值的一 个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次...解释器在遇到函数定义的时候,会自动把函数和他可能使用的变量(包括本地变量和父级和祖先级函数的变量(自由变量))一起保存起来.也就是构建一个,这些变量将不会被内存回收器所回收,只有当内部的函数不可能被调用以后...(例如被删除了,或者没有了指针),才会销毁这个,而没有任何一个引用的变量才会被下一次内存回收启动时所回收....Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。...Js代码 function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。

2.5K50

再谈JS

块级作用域 不同的作用域能够拥有同名的变量 外部作用域的变量可以在内部作用域中访问 JS通过「词法作用域」(静态作用域)来实现变量查询机制 「(closure)是一个函数」:其有权访问其词法作用域内部的变量即使该函数在词法作用域外部被调用...常规的生成方式 1....函数式编程-柯里化 ---- 一图胜千言 文章概要 作用域 作用域嵌套 词法作用域(lexicsl scope) 示例 在进行讲解之前,我们需要对一些前置知识点,做一些简单的介绍:何为作用域... 词法作用域允许「静态地」访问外部作用域的变量,这个定律仅差一步就能实现。 function outerFunc() { let outerVar = 'I am outside!'...有一个识别的经验:如果函数内部存在外部变量,那么该函数就是一个,因为外部变量已经被「记住了」 5.

2.8K30

JS总结

的用途 1.防止全局变量污染 在JavaScript中全局变量是个不小的毒瘤,全局变量有时是很方便,但是很多项目滥用全局变量成灾,维护起来非常困难。...5.制作缓存池 这个用途是使用了里的局部变量不会被销毁的特点,实现缓冲池的方法有很多,使用只是其中一种,大家可以看自己的情况来使用,下面是使用来实现缓存池简单大意的例子: ?...6.循环中保存索引 开发过程中在循环里注册回调很常见,但是刚接触js的同学常常会遇到注册完了回调,发现索引值不对,可以看下面的例子: ?...7.的其他问题 因为中的局部变量不会释放,所以和全局变量一样会占用大量内存。 中变量引用由于不会释放,很有可能造成内存泄露。 大量的使用可能会降低程序的可读性,增加维护成本。...总之有很多地方用起来很方便,的特性也能帮助我们实现很多巧妙的设计,但是也会引起很多问题,所以在开发过程中应该尽量少用

2.3K41

初识js中的_Js中变量理解

今天看了关于js方面的文章,还是有些云里雾里,对于一个菜鸟来说,学习确实有一定的难度,不说别的,能够在网上找到一篇优秀的是那样的不易。   ...当然之所以难理解,个人觉得是基础知识掌握的不牢,因为牵扯到一些前面的东西,比如作用域\等等,如果连基本的作用域都没有弄清楚,自然不可能搞懂,还有就是对js的实践比较少,因为你根本就不知道什么时候要用这东西...,自然谈不上对的深刻理解。   ...今天我就简单的说说我目前所理解的,当然可能不完全正确,但是我相信会给你一定的启发。   首先我们来谈谈js中的变量,如果你不知道我为什么要说这些,那么你根本没有掌握js的基础,建议回头复习。...这也只是简单的介绍了一下,后面将会在的高级部分讲解。如果你对有更深的理解可以pm我。

3.2K20

常见面试题-JS详解

前言 关于这个玩意,在面试当中问到的几率高达百分之八十,所以不管是准备面试还是日常开发,对的理解都是必须要深入的,这样对于发生问题及处理问题会有很大帮助,在面试当中也能够把它向面试官说清楚。...正文 的三个特性 函数嵌套函数 函数内部可以引用外部的参数和变量 参数和变量不会被垃圾回收机制回收 的定义及优缺点 是指有权访问另一个函数作用域中的变量的函数,创建的最常见的方式就是在一个函数内创建另一个函数...但的情况不同!...会使变量始终保存在内存中,如果不当使用会增大内存消耗。 JS的垃圾回收原理 在javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。...使用的好处 那么使用有什么好处呢?

52430

试题原题_ 数学

试题原题 function fun(n, o) { // ① console.log(o); return { // ② fun: function(m) { // ③...④ 在③里面创建的匿名函数会返回一个叫 fun 的具名函数return fun(m, n);,这里需要说明一下这个 fun 函数返回之后的执行过程: 返回 fun 函数,但默认不执行,因为在 js 里面...2.1 注解:当前的作用域里是一个新创建的对象,并且对象里面只有 fun 属性,而没有 fun 具名函数 2.2 注解:js 作用域链的问题,会导致他会不断地往上级链查找。...然后这两个 fun 函数会形成,第二个 fun 函数会不断引用第一个 fun 函数,从而导致一些局部变量例如 n,o 得以保存。...所谓:各种解释都有,但都不是很接地气,简单的来说就是在 js 里面,有一些变量(内存)可以被不断的引用,导致了变量(内存)没有被释放和回收,从而形成了一个独立的存在,这里涉及了js 的作用域链和 js

24020

常见面试题_的特点

理解:什么是?...1.密闭的容器,类似set/map容器,用来存储数据 2.是一个对象,存放数据的格式:key:value 形成的条件 1.函数嵌套 2.内部函数引用外部函数 function fun(){...fun2()执行之后断点,不在了,因为fun2()执行完成后,作用域销毁,释放内存,里面的同时被销毁 的应用场景: 将内部的函数返到外部去 function fun(){...: 延长外部函数局部变量的生命周期 的缺点: 优点也是缺点,本应被销毁的变量,因为的原因没有被销毁,长期存在的话,容易造成内存泄漏 注意点: 1.合理使用 2.用完要及时清除(销毁),避免内存泄露...基本面试题: function fun(){ var count = 1; return function (){ count ++ console.log(count

58920
领券