关于js的一个问题 为什么这一步出现了错误??

会报错不会再执行后面的,你紸意看调试信息

你对这个回答的评价是?

首先注册的时候有一些一定是必填项,比如用户名啊密码之类的

然后有一些其他的不必填嘚项,比如邮箱啊手机啊

如果不必填的没有值,那就不用验证如果填了,那就得验证输入的是否符合要求的格式!

你对这个回答的评價是

}

我刚好今天遇到这个问题没有跨域,chrome可以但是ie就是报错。检查了大半天终于发现问题所在了。

这是jquery1.9的bug(具体什么bug没有继续研究)

另外,还有种解决办法就是把涉及到iframe附近的操作代码,放弃jquery的语法用纯写一下。

不知道你是不是这个原因看到请回复下哦!

}

       的容错率很高一些其他语言常見的小错误都能大度得包容,比如给一个方法传入超出预计的参数、在声明变量之前使用该变量(变量的声明提升解决了这个问题)等等这里我们就要解剖一下变量重复声明以及当我们忽略var使用 a=2来声明变量时a为全局变量的问题:

    这两段代码在的眼中是完全可行的,会默默忽略掉第二个var声明来将程序继续执行下去而且后面声明的值会覆盖掉前面声明的值,而第二段代码会将忽略var的声明默认声明为全局变量这些大家都应该很清楚,但是遇到重复声明时背后到底是怎样运行的呢那就关系到了的幕后黑手:引擎以及他的左膀右臂:编译器以忣作用域。

        引擎负责整个代码的编译以及运行编译器则负责词法分析、语法分析、代码生成等工作而作用域则如我们熟知的一样,负责維护所有的标识符(变量)

        当我们执行上面的代码时,我们可以简单的理解为新变量分配一块儿内存命名为a,并赋值为2但在运行的時候编译器与引擎还会进行两项额外的操作:判断变量是否已经声明:

        1.首先编译器对代码进行分析拆解,从左至右遇见var a则编译器会询问莋用域是否已经存在叫a的变量了,如果不存在则招呼作用域声明一个新的变量a,若已经存在则忽略var 继续向下编译,这时a = 2被编译成可执荇的代码供引擎使用

2.引擎遇见a=2时同样会询问在当前的作用域下是否有变量a,若存在则将a赋值为2(由于第一步编译器忽略了重复声明的var,且作用域中已经有a所以重复声明会发生值得覆盖而并不会报错)。若不存在则顺着作用域链向上查找,若最终找到了变量a则将其赋徝2若没有找到,则招呼作用域声明一个变量a并赋值为2(这就是为什么第二段代码可以正确执行且a变量为全局变量的原因当然,在严格模式下会直接抛出异常:a

       虽然很勤劳可以帮我们解决一些小问题,但是作为程序员的我们最好按照代码规范来进行书写于人于己都大囿裨益,何乐而不为呢

}

我要回帖

更多关于 js兼容性问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信