Javascript不兼容/不一致

cgp*_*cgp 6 javascript

我想在几周内做一个演示,并且想知道:在开发时你需要注意的十大Javascript不兼容性是什么?你绊倒了什么?我可以先从一个开始:

var somevar = {
 'internet': 'explorer',
 'hates': 'trailing',
 'commas': 'in',
 'json': 'code', // oh noes!
}
Run Code Online (Sandbox Code Playgroud)

使用像jQuery或base这样的框架可以解决哪些其他常见陷阱?

lev*_*vik 7

使用HTML标记

<div id="foo">
    <a href="#">Link 1</a>
</div>
Run Code Online (Sandbox Code Playgroud)

如果获得对外部div的引用,则在某些浏览器中将有一个子节点,在其他浏览器中将有三个子节点,具体取决于处理空格的方式.有些文本节点的换行符和空格作为div#foolink元素之前和之后的子元素.


Mag*_*nar 6

嗯,隐含的分号存在问题.

return {
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)

有些人喜欢在自己的行上打开括号,如下所示:

return
{
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)

但是,最后一条语句将返回undefined,因为解析器看到:

return;
{
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*hew 3

var x = new Boolean(false); 如果(x)...否则...;

是否采用“if”或“else”分支?

var x = "hi", y = new String("hi");

typeof(x) 和 typeof(y) 是什么?

编辑:..

parseInt("017") 生成 15(八进制)而不是 17

“Error”对象是 IE 和 Firefox 不同的签名。

当使用对象作为 hashmap 时,需要使用 object.hasOwnProperty(key) 来确保该属性不是通过原型链继承的。