JS在IE和FF中的语法兼容

在前端开发的浏览器兼容工作中,我觉得主要分为CSS样式兼容和Javascript脚本兼容,而脚本兼容又分为浏览器实现的兼容和语法本身的兼容,下面我会对我所了解的JS在不同浏览器中语法的细小差别做一个归纳。

一、函数声明
函数声明(姑且这样说)有两种方法:
function abc(){};
var abc=function(){};
这两个都是通用的,只是效果有些许不同,但试想下面一种情况:
var obj={};
//直接赋值一个函数
obj.abc=function(){};
//用function关键字声明
function obj.abc(){};
这两种写法都能正确的在IE中运行,但第二种却无法在FF中使用,于是,兼容的做法就是使用第一种。

二、函数的嵌套
有时我们会把函数嵌套在if语句中,虽然我不知道这是不是一个坏习惯,但它在不同的浏览器中的确存在不同。一般情况下,如果我们使用function关键字来声明一个函数,它似乎会在一开始就完成初始化,所以我们可以在前面的代码里使用后面的函数,但函数写在if里呢?惨痛的调试经验告诉我,FF不会在if中优先初始化,也就是说,在FF的if中,function关键字声明的函数等价于var声明的函数,它们会逐语句执行。这时如果把要用到的函数写在了后面,就会不幸地报错了。不过在IE里,它是允许的。兼容的方法也就是将函数写在前面,或者写在if之外。

额,写完了才发现都是关于函数的,等我搜索完我的脑袋,要是还有就再加。