2012-05-20 54 views
0

这是关于JS变量作用域的第n个问题,但我通读了其余部分,并没有完全得到答案。Javascript变量范围与事件处理程序

var notification = window.webkitNotifications.createNotification(
'image.png',      // The image. 
'New Post: ',// The title. 
'New stuff'// The body. 
); 

var itemLink = 'http://pathtothefile.com'; 

notification.onclick = function(itemLink) { 
window.focus(); 
window.open(itemLink,'_blank'); 
this.cancel(); 
}; 

notification.show(); 

如何获取在全局范围中定义的itemLink以在onclick函数中工作?

+2

将其从参数列表中删除。它只是在那里自动,因为它是一个较小的范围。 – Corbin

回答

2

从功能删除参数:

notification.onclick = function(itemLink) { // overrides itemLink in the global 
              // object. 

固定码:

notification.onclick = function() { 
    window.focus(); 
    window.open(itemLink,'_blank'); 
    this.cancel(); 
}; 
+0

非常感谢gdoron,这解决了我的问题 – kakoma

1

在名称冲突,局部变量优先。删除或重命名参数itemLink

notification.onclick = function(something_else) { 
    //global itemLink should be accessible 
}; 
+0

非常感谢约瑟夫。 – kakoma