2016-09-15 144 views
0

我有一個計時器:setInterval的全局變量沒有定義

timer: function(duration, display) { 
    var timer = duration, minutes, seconds; 

    var interval = setInterval(function() { 
     minutes = parseInt(timer/60, 10); 
     seconds = parseInt(timer % 60, 10); 

     minutes = minutes < 10 ? "0" + minutes : minutes; 
     seconds = seconds < 10 ? "0" + seconds : seconds; 

     display.text(minutes + ":" + seconds); 
     display.addClass('timed sticky'); 

     if (--timer < 0) { 
      $('.btn.next').click(); 
     } 
    }, 1000); 
} 

當我使用var interval = ...,它的工作原理。但是,當我嘗試將其全局設置爲var時,它表示Uncaught ReferenceError: interval is not defined。任何想法爲什麼?

+1

你是在嚴格的模式?然後你需要在函數之外有一個'var interval;'聲明。 – Barmar

+0

@Barmar - 是的,似乎是這樣。第一次使用React,所以我想這是一個默認的事情 – frosty

回答

0

因爲你在嚴格模式下運行。

function strictMode() { 
 
    'use strict'; 
 
    strictInterval = 1; 
 
    console.log('strict mode'); 
 
} 
 

 
function looseMode() { 
 
    looseInterval = 1; 
 
    console.log('loose mode'); 
 
} 
 

 
looseMode(); 
 
strictMode();

使用缺乏var創建一個全局變量是一個不好的想法。如果要訪問多個作用域中的變量,請將它聲明在這些作用域之外或提供一種在這些作用域之間共享數據的機制。

// Declared outside of both scopes 
 
var shared = 1; 
 
function a() { 
 
    console.log(shared); 
 
    shared = 2; 
 
} 
 

 
function b() { 
 
    console.log(shared); 
 
    shared = 3; 
 
} 
 

 
a(); 
 
b(); 
 
a();