我想对所有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);
}
任何建议我(初学者)做错了什么?先感谢您!
答案 0 :(得分:0)
使用let
代替var
来声明您的变量可能会解决您的问题。详细描述了这两者之间的差异here;相关的想法(取自链接的帖子)是
var的范围限定为最近的功能块,并且将范围限定为最近的封闭块(如果在任何块之外,则两者都是全局的),它可以小于功能块。