为了账号安全,请及时绑定邮箱和手机立即绑定

javascript函数参数传递问题。

javascript函数参数传递问题。

kx00012kx 2016-07-28 17:28:13
javascript进阶篇 9-22 编程练习这是参考代码里的删除<tr>标签调用的函数: function deleteRow(obj){    var tbody = document.getElementById('table').lastChild;   var tr = obj.parentNode.parentNode; tbody.removeChild(tr); }函数里的参数obj该怎么理解?从“var tr = obj.parentNode.parentNode;”反推,这一条代码里的obj相当于是<td>标签下的一个文本节点,类似“王小明”、“刘小芳”等等这样的文本节点。为什么这里在没有说明的情况下就可以把参数obj默认为一个文本节点?为什么“var tr = obj.parentNode.parentNode;”不能用  var tr = obj.parentNode;或者用  var tr = obj;替换?
查看完整描述

1 回答

?
回夢

TA贡献18条经验 获得超5个赞

你先理解以下什么是函数。我给你写个简单的例子。

function add(a,b){return a+b;}

 好了,我函数定义好了,但是你知道a和b是什么吗?我函数摆在这里,我没有去调用,是没有意义的。

只有当我使用add(1,2);的时候 这个函数才会触发,那么a=1,b=2;函数执行完毕得到结果3.

这样你能理解吗?

函数的那个obj只是一个实参,传递过来的是什么还需要看传递者。

你可以去看看形参和实参的解释。

查看完整回答
1 反对 回复 2016-07-28
  • kx00012kx
    kx00012kx
    你举的栗子可以理解,形参与实参也去了解了,谢谢! 在点击删除调用函数function deleteRow(obj){。。。。}时,传入的是“this”(“deleteRow(this)”), 在这个栗子里的this,我认为是直接代指了“删除”这个文本节点本身,在我的逻辑里,我觉得这样就解释的通 “var tr = obj.parentNode.parentNode;”了,因为删除的层级关系是跟“王小明”、“刘小芳”等等这样的文本节点一样的。 可以这样理解吗?this,在js里有特殊的指定含义吗?
  • 回夢
    回夢
    有点类似于指针,我自己虽然知道是什么意思,但是我说不明白。 关于这一块,你可以多打断点去看看this到底代表什么。 把它用console.log打印出来,在控制台看看,对你理解它有一些帮助。
  • 1 回答
  • 0 关注
  • 1288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信