正在研究JS权威指南,出个简单问题考考大家. var i=1;function num1(){ alert(i); var i=2; alert(i);}num1();这个代码中第一个alert(i)值是多少第二个是多少?大家凭自己的思想作答,敲进去就没意思了,呵呵! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个不会是1, 因为在进入num1是, 解析器会先抓var变量, 开辟内存空间但不赋值, 直到解析到赋值语句. 在第一个alert时, 会判断现在要的i是存在与函数体里的, 并不是全局的i, 而根据这个i索引到的是未赋值的i. 第二个明显的2 果然~~ undefined, 2. 我的理解:这个跟作用域有关,进入函数num1()后首先会检索局部变量,执行到alert(i)时,发现在函数体内此语句前并没有定义变量i,由于js中的变量在使用前可定义也可不定义,所以,此句不会出错,在此时定义了变量i,但i还没有赋值,所以,第一个alert结果为undefined。紧接着给i赋值为2,所以第二个alert结果为2。 请问是不是系统会先扫描下num1函数里的局部变量,若有与全局变量同名的变量i的使用,再看有没有局部变量i的定义,若有则认为前面遇到的变量i是局部的,否则认为是全局的:例子var i=1;function num1(){ alert(i); i=2; alert(i);}num1(); missingt;before statement 在线跪求!.trigger调用事件返回值是object?怎样才能return false? 求教:想学好javascript,怎么才能提高 有人懂jquery吗帮忙看看 请问IE7下javascript函数的执行问题 谁能告诉我这个tab和左边的树形菜单是怎样做的? 怎样不用点提交就可直接获取复选框的值呢? extjs grid 获得焦点的行 进行回车事件 关于ShowModalDialog关闭的问题求教 感谢本版朋友的帮助,散分100 javascript语句在服务器端出错?? 请高手解答下面代码是什么意思!!!!!!!!
undefined, 2.
若有与全局变量同名的变量i的使用,再看有没有局部变量
i的定义,若有则认为前面遇到的变量i是局部的,否则认为
是全局的:例子
var i=1;
function num1()
{
alert(i);
i=2;
alert(i);
}
num1();