JavaScript笔试面试题收集(三)

本系列主要在于对自己的日常学习的内容做一个归纳整理,同时分享一些平时遇到的一些比较好的面试题.

通过对笔试面试题的学习,强化自己的所学知识面.

今天分享的题比较简单,主要是考察闭包的知识以及一些逻辑思维

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n)
}}
}
var a = fun(0); //undefined
a.fun(1); //0
a.fun(2); // 0
a.fun(3); // 0
var b = fun(0).fun(1).fun(2).fun(3); //undefined 0 1 2
var c = fun(0).fun(1); // undefined 0
c.fun(2); // 1
c.fun(3); // 1

个人拙见:

其实以上的代码主要还是一个闭包的问题,代码的逻辑判断清楚了就很好解.因为当我们传一个参的时候,第二个参数必然是undefined.这也是为什么abc一出来就执行的是undefined的原因.因为所有的函数执行都只传递了一个参数.

第二,当我们为返还的函数传参的时候,也就是给这个函数里面的函数fun的参数m传值的时候,会返回一个以m为第一个参数,其父函数的第一个参数作为第二个参数的函数.

其实说到这里就很好理解了,我们将函数看成一个很好玩的方法,我们传值进去的时候,它会记录两个值作为参数,并把第二个参数的值打印出来,再往里面传一个值的时候,就会把之前的第一个参数挪到后面作为第二个参数.以此类推.

文章目录
  1. 1. 个人拙见:
|