我有时遇到了这个问题,但仍然不知道是什么原因造成的。ReferenceError:变量未定义
我此脚本的页面:
$(function(){
var value = "10";
});
但浏览器说“的ReferenceError:值没有定义”。但是,如果我去浏览器控制台输入要么
10
或
var value = "10";
其中一方可以返回10.什么是我的脚本问题?
编辑:刚摆脱“var”就可以解决问题。
我有时遇到了这个问题,但仍然不知道是什么原因造成的。ReferenceError:变量未定义
我此脚本的页面:
$(function(){
var value = "10";
});
但浏览器说“的ReferenceError:值没有定义”。但是,如果我去浏览器控制台输入要么
10
或
var value = "10";
其中一方可以返回10.什么是我的脚本问题?
编辑:刚摆脱“var”就可以解决问题。
它在闭包中声明,这意味着它只能在那里访问。如果你想全局变量访问,你可以删除var
:
$(function(){
value = "10";
});
value; // "10"
这相当于写window.value = "10";
。
变量仅在您定义它们的范围内可用。如果你在一个函数中定义了一个变量,你将无法在其外部访问它。
定义变量,var
功能外(和之前当然它),然后分配给10
这里面的功能:
var value;
$(function() {
value = "10";
});
console.log(value); // 10
注意,你不应该忽略这个代码的第一行(var value;
) ,因为否则您将值赋给未定义的变量。这是不好的编码习惯,不能在严格模式下工作。定义变量(var variable;
)并将值赋给变量(variable = value;
)是两件不同的事情。您无法将值分配给您尚未定义的变量。
这里可能没什么关系,但$(function() {})
是$(document).ready(function() {})
的快捷方式,只要加载文档就会执行该功能。如果您想立即执行某些操作,则不需要它,否则请注意,如果您在DOM加载之前运行它,则值将为undefined
,直到它已加载为止,因此在$(function() {})
之后放置的console.log(value);
将返回undefined
。具有以下
得到了错误(在函数初始化):换句话说,它会执行的顺序如下:
var value;
console.log(value);
value = "10";
也见代码;
"use strict" ;
var hdr ;
function init(){ // called on load
hdr = document.getElementById("hdr");
}
...同时采用了三星galaxy名人堂(废话电话这使它成为一个优秀的测试人员)的股票浏览器 - 的userAgent; Mozilla/5.0(Linux; U; Android 4.1.2; en-gb; GT-S6810P Build/JZO54K)AppleWebKit/534。30(KHTML,像壁虎)版本/ 4.0移动Safari/534.30
相同的代码在其他地方工作,包括旧手机上的股票浏览器 - userAgent; 的Mozilla/5.0(Linux的; U;的Android 2.3.5;烯GB; HTC_WildfireS_A510e构建/ GRJ90)为AppleWebKit/533.1(KHTML,例如Gecko)版本/ 4.0移动Safari/533.1
此的修复是改变
var hdr ;
到
var hdr = null ;
McGarnagle嗨它解决了这个问题!感谢差别很大。但有或没有var的区别是什么 –
@LionLiu:用'var',它的局部于'function'声明。没有'var',它的全局变量。 –
嗨@McGarnagle,我已经在我的jquery ready函数中声明了var a = 0,并且正在使用这个变量作为参数从form的onsubmit中调用一个函数,但是仍然得到了引用错误,如果变量是全局变量,它应该已经作为该功能的参数,但它不起作用,我只是想知道确切的原因,如果你知道的话。感谢您的时间。 – noobcode