无法访问全局变量

时间:2017-06-11 20:45:47

标签: javascript jquery

当我尝试发布推特功能时,我得到undefinedquote_text变量应该是全局的,因此quoteTwitter函数可以访问吗?

$(document).ready(function () {
  loadJSON();
  getQuote();
  console.log(quote_text);
});

// Declare variables
var json_obj;
var num = 0;
var quote_text = "";

// Display a quote - this method is not perfect since the random number will repeat itself and it appears as if no new quote is delivered
function getQuote(callback) {
  var html = "";
  num = randNum();
  quote_text = json_obj[num].quote;

  html += "<strong> " + quote_text + " </strong>";

  $("#quote").html(html);
  $("#author").html(json_obj[num].author);
};

// Post the current quote on twitter
function quoteTwitter(quote_text){
  var tweet = quote_text;
  window.open('https://twitter.com/home?status=' +encodeURIComponent(tweet),"_blank"); 
}

1 个答案:

答案 0 :(得分:2)

您的函数定义包含quote_text作为参数,因此在函数内部尝试使用它而不是具有相同名称的全局变量。

当你调用它时,你可能没有把任何东西传递给函数。所以它是未定义的。

您可以通过更改此内容来解决此问题:

function quoteTwitter(quote_text){

到此:

function quoteTwitter(){

...但是从长远来看,如果可能的话,将正确的值作为参数传递可能会更好,而不是依赖于全局变量。