JS - var undefined

时间:2017-06-20 22:54:31

标签: undefined var

我想对所有3个函数(newQuote,postFB和tweet)使用相同的var randomQuote,这似乎不起作用。

如果我把它放在newQuote函数中,只有这个函数可以工作,如果只是在外面 - 只有共享函数工作,newQuote只会在点击(?)时更改一次引用。

我可以让所有3个函数都起作用的唯一方法是,如果我重复它 - 一个在newQuote函数内部,一个在newQuote函数之外 - 是否有任何方法可以使它成为“DRY-er”?

var randomQuote = Math.floor(Math.random() * (quotes.length)); //outside 
document.getElementById("refresh").onclick = newQuote;
 function newQuote() { 
var randomQuote = Math.floor(Math.random() * (quotes.length)); //inside


document.getElementById("facebook").onclick = postFB; 
function postFB() {
var url = "http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(quotes[randomQuote]);
  window.open(url);
}
  • 这里没有包含twitter功能 - 与FB相同的想法

任何建议我(初学者)做错了什么?先感谢您!

1 个答案:

答案 0 :(得分:0)

使用let代替var来声明您的变量可能会解决您的问题。详细描述了这两者之间的差异here;相关的想法(取自链接的帖子)是

  

var的范围限定为最近的功能块,并且将范围限定为最近的封闭块(如果在任何块之外,则两者都是全局的),它可以小于功能块。