最新评论

今天郁闷了一下午,我说到底哪里错了呢,原来问题出在/g上头,谢谢楼主,幸亏有你这篇日志,要不我还不知道要继续郁闷多久
本机没装Chrome,未能对LZ的测试结果进行验证。
不过,关于“在不同浏览器中会得到不同结果,IE中:0 true 0 true,FF和Chrome中:0 true 1 false”我觉得这个应归于Chrome的设计缺陷。
因为函数内的变量是局部变量。alert(a(5))跟alert(a(6))的结果应该是相同的。除非lastIndex是作为对象的一个静态变量才会有Chrome这样的结果,但是这样的话,正则表达式的嵌套使用就容易出错。
LZ可以验证这个结果:
var str="adb 23 32";
var regExp=/\b\d+\b/;
regExp.test(str);
alert(regExp.lastIndex);
regExp=/\w+/;//重定义表达式,在ie中会被归0,在Chrome不知会否这样.
alert(regExp.lastIndex);
如果结果都一样就说明lastIndex在Chrome中是个静态变量。
本机没装Chrome,未能对LZ
@z s k
谢谢,原来是这样的
注:var re = new RegExp("^[0-9]+$")中只能用[0-9],不能用\d,至于为什么,我不很明白,希望哪位知道的给讲讲。


是这样的:不是不能使用\d, 是因为这样必须对“\”进行转意,所以要写成\\d

如:var re = new RegExp("^\\d+$")
re: 一段有意思的javascript代码 奋斗的小涛 2009-05-27 20:28  
@cloudgamer
嗯,您这么一说,头脑中先前的迷惑顿时烟消云散了,呵呵
re: 一段有意思的javascript代码 cloudgamer 2009-05-27 19:24  
在作用域里面var和function的定义会提前
以上代码其实就是
var i = 1;

function Test() {

var aa = 33;
var i;

i = i + 1;

for (i = 0; i < 3; i++) {

aa = aa + i;

for (i = 0; i < 3; i++) {

aa = aa + i;

}

}

alert(aa);//36

alert(i);//4

}

Test();

alert(i); //1
re: javascript中点号‘.’的使用 奋斗的小涛 2009-05-24 15:17  
@cloudgamer
一定,以后要多向你学习。
re: javascript中点号‘.’的使用 cloudgamer 2009-05-23 14:32  
呵呵不错
不过这些只是基础
还要好好加油啊