我试图从setInterval()函数中获取变量,但它总是说没有定义字符串。代码示例如下:
setInterval(function(){
var String = "test";
}, 1);
console.log(String)
它应该做的是它应该记录"测试"多次进入控制台。但它不起作用。任何帮助或建议?
编辑:它现在有效。正确的代码是
setInterval(function(){
var myString = "test";
console.log(myString);
},1);
答案 0 :(得分:1)
你的var String在你的函数中,并且console.log正在从你的函数外部发出请求,所以变量超出了console.log的范围。
正确的语法是:
setInterval(function(){
var String = "test";
console.log(String);
},1);
上面的代码确实有效,但是将String重命名为myString就更好了。
答案 1 :(得分:1)
这可以解决你的问题。但请仔细阅读下面的解释来理解。
setInterval(function(){
var something = "test";
console.log(something)
}, 1);
所以,基本上你的代码存在两个问题,
1。) var String 将覆盖实际的javascript String对象,但这并不是您获得 undefined <错误的原因/ EM> 强>
2。)您收到错误的原因与Javascript中的本地范围与全局范围有关。在上面的问题中,您在本地函数范围中定义了一个变量,并尝试访问全局范围内的同一个变量。
答案 2 :(得分:0)
我认为使用错误名称变量的问题。 String是类的名称。请改为var myString = 'test'
。保持订单相同。应该工作
EDIT 对不起,伙计们,深夜,我的眼睛正在关闭:)。
将您的控制台置于回调中! 而且,不要使用String作为变量!
请点击此处查看您的vars:http://www.javascripter.net/faq/reserved.htm
答案 3 :(得分:0)
正如评论中所提到的,您在错误的范围内定义变量。具体来说,您是在要调用的匿名函数中定义它,因此只能在该函数中引用它。在函数外定义变量将解决您的问题。
{
"_id" : x,
"device_model_id": x,
"device_os_id": x,
"device_status_id" : x,
}