函数作用域,闭包,数据类型的题目
第一题:函数作用域和闭包
var a = 9 function fn(){ a = 0 return function (b){ return b+a++ } } var f = fn() console.log(f(5)) console.log(fn()(5)) console.log(f(5)) console.log(a)
这题要注意函数中的a是隐式全局变量,要注意下这个隐式全局变量在什么时候执行,返回的函数b并不需要执行 a = 0,a++是在执行过之后让a+1
所以但答案是:
5 5 6 2
第二题:关于数据类型传值和传址
var ary = [1,2,3,4] function fn(ary){ ary[0] = 0 ary = [0] ary[0] = 100 return ary } var res = fn(ary) console.log(ary) console.log(res)
形参和实参要注意区分一下,他们两人之间没有直接的关系,但是有间接的关系
答案是
[0, 2, 3, 4]
[100]