JS当中已有一个全局变量 aa后在一个jsp中加了一个js方法
function aaaaa(){
alert(aa); var aa = '123';}执行的时候,弹出 undefined错误,把 var aa = '123';去掉就没事了。请高手解释一下。
function aaaaa(){
alert(aa); var aa = '123';}执行的时候,弹出 undefined错误,把 var aa = '123';去掉就没事了。请高手解释一下。
function aaaaa(){
alert(aa);
var aa = '123';
alert(1234);//
}
因错误阻断,undefined在控制台还能看到
是否定义与定义是否正确是两个不同概念
你有
{
alert(aa);
var aa = '123';
}
这是定义在后,使用在前
违背了:先定义后使用的原则
function aaaaa(){
alert(aa);//因为js预编译,这里的aa其实是后面var中定义的,但赋值操作却没有执行,因此报undefined var aa = '123';}
function aaaaa(){
var aa;
alert(aa);//因为js预编译,这里的aa其实是后面var中定义的,但赋值操作却没有执行,因此报undefined aa = '123';}
看看下面这篇贴子吧,很是被熏陶了一把
http://topic.csdn.net/u/20120830/13/db72bec5-db6c-4c78-83ab-973f20bc2216.html
js并不是纯解释执行的,他有一个预编译过程(当然是比较粗浅的)
在此过程中,他发现在花括号({})有 var 变量声明,所以他就假定在此花括号中,您的语法是正确的,而屏蔽掉外部变量 aa
没想到,你在运行时没按“先定义,后使用”的原则办事。
于是就无所适从了,只有报个错,提醒你一下