Javascript-如何从setInterval()函数中获取变量?

Javascript-如何从setInterval()函数中获取变量?,javascript,Javascript,我试图从setInterval()函数中获取一个变量,但它总是说字符串没有定义。代码示例如下: setInterval(function(){ var String = "test"; }, 1); console.log(String) 它应该做的是多次将“test”记录到控制台中。但它不起作用。有什么帮助或建议吗 编辑:现在可以了。正确的代码是 setInterval(function(){ var myString = "test"; console.log(myString

我试图从setInterval()函数中获取一个变量,但它总是说字符串没有定义。代码示例如下:

setInterval(function(){  
var String = "test";  
}, 1);  
console.log(String)
它应该做的是多次将“test”记录到控制台中。但它不起作用。有什么帮助或建议吗

编辑:现在可以了。正确的代码是

setInterval(function(){
var myString = "test";
console.log(myString);
},1);

我认为变量使用错误名称的问题。String是类的名称。请改为尝试
var myString='test'
。让订单保持不变。应该有用

编辑 抱歉,伙计们,深夜,我的眼睛都闭上了:)

把你的控制台放在回调里面! 但是,不要使用字符串作为变量


在此处查看变量的命名:

您的变量字符串位于函数内部,而console.log正在从函数外部发出请求,因此变量超出了console.log的作用域

正确的语法应该是:

setInterval(function(){
var String = "test";
console.log(String);
},1);

上面的代码确实有效,但将字符串重命名为类似myString的名称将是更好的做法。

这将解决您的问题。但请阅读下面的解释以理解

setInterval(function(){  
    var something = "test";  
    console.log(something)
}, 1);  
因此,这里的代码基本上有两个问题,

1.var String将覆盖实际的javascript String对象,但这并不是出现undefined错误的原因


2.)出现错误的原因与Javascript中的局部作用域与全局作用域有关。在上面的问题中,您在局部函数作用域中定义了一个变量,并试图在全局作用域中访问同一个变量。

如注释中所述,您在错误的作用域中定义了该变量。具体地说,您正在调用的匿名函数中定义它,因此它只能在该函数中被引用。在函数外部定义变量将解决您的问题

var myString = "hello world";

setInterval(function(){  
    myString = "test";  
}, 1);

// this will still log 'hello world', not 'test' because 
// the code in your interval has not run yet
console.log(myString)

setTimeout(function(){  
   // this will log 'test' because the code in the interval
   // has now had a chance to run
   console.log(myString)  
}, 5);

也许学习javascript中的作用域会对您有所帮助。将
console.log()
调用放在计时器函数内。另外,不要将
String
用作变量名,因为您正在覆盖已存在的具有该名称的内置全局对象。请查看此处,了解如何命名,否则将无法使用。他正试图记录一个在不同范围内定义的变量的值。由于愚蠢的抢票行为,他想投上一票,却被投下一票:)@ArseniiProhorchik:别担心。事情有自己的解决办法:)