黑马程序员技术交流社区

标题: 一道JS笔试题 [打印本页]

作者: sangwentao    时间: 2016-6-3 20:23
标题: 一道JS笔试题
都说js简单,我觉得学好也不容易,不但有些概念不好理解,而且琐碎的知识很多。一不小心就会犯错。来看下面一个笔试题。

var length = 10
function fn(){
    alert(this.length)
}
var obj = {
    length: 5,
    method: function(fn) {
        fn() // ?
        arguments[0]() // ?
    }
}
obj.method(fn)

上面问号语句执行结果?


答案:
这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即fn内的this===arguments,调用时仅传了一个参数fn,因此length为1。

【看来函数传参机制是将实参作为函数arguments的属性传入的,因此当参数为函数时,相当于arguments调用函数。】
作者: hansuchang    时间: 2016-6-4 18:59
这是升就业班的笔试题吗
作者: xuemingqiang    时间: 2016-6-4 22:20
向着逝去的夕阳加油吧骚年
作者: 729685305    时间: 2016-6-15 21:51
这是升就业班的笔试题吗           




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2