我有一个计时器:
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
。知道为什么吗?
答案 0 :(得分: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();