JavaScript 语法中常见的陷阱

一、区分大小写

二、单引号与双引号

a) 没有特殊的区别,但大多数的WEB开发者都选择使用单引号而不是双引号

三、换行

a) 无法你使用哪种引号来创建字符串,字符串中间都不能包含强制换行符;

四、如果你在同一页面中组合使用了多个库和不同来源的代码,而这些脚本恰好需要使用被你覆盖的核心函数完成相应的功能,那么就可能会得到意外的结果;

五、匿名函数

a) 匿名函数是一种在不带名称的函数,

六、解析域和作用域

a) Function myFunction(){

var myVariable=’inside’;

}

var myVairable=’outside’;

myFunctio();

如果内部去掉为myVariable赋值时使用的关键字var ,那么myVariable的作用域将会解析到外部。(var 关键字决定了哪个函数是特定变量的作用域链的终点,同样的逻辑也适用于取得变量值的情况);

七、迭代对象

a) Var all=document.body.getElementsByTagsName(‘*’);

For(i=0;i<all.length;i++){

//对ALL[I]元素的某些操作;

}

b) Var all=document.body.getElementsByTagsName(‘*’);

For(i in all){

//对ALL[I]元素的某些操作;

}

这次迭代过程中,i值也会分别等于length/item/namedItem这导致代码中出现意外的错误;而hasOwnProperty()避免这个问题;如果对象的属性或方法是韭继承的、那么hasOwnProperty()返回true;如果在for循环中使用了这种检查,那么循环将会跳过length这样的属性;length不是数组all的直系属性,而是派生数组all的NamedNodeMap对象的继承的属性;

c) Var all=document.body.getElementsByTagsName(‘*’);

For(i in all){

If(all.hasOwnProperty){continue;}

//对ALL[I]元素的某些操作;

}

八、函数的调用和引用(不带括号)

a) Var foo=exampleFunction; 与var foo=exampleFunction();

尾处没有圆括号,赋值给变量的是函数本身,而非结果。带圆括号的不会得到的想要的结果;

 

待续!如有疑问,请提出你的见解,一起分享。。

你可能感兴趣的:(JavaScript,职场,语法,休闲,陷阱)