A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sangwentao 中级黑马   /  2016-6-3 20:23  /  2682 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

都说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调用函数。】

3 个回复

倒序浏览
这是升就业班的笔试题吗
回复 使用道具 举报
向着逝去的夕阳加油吧骚年
回复 使用道具 举报 1 0
这是升就业班的笔试题吗           
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马