javaScript注意技巧
2015-06-30 10:28
429 查看
javascript中尽量不使用全局变量
在写js代码的时候,经常会因为这样或者那样的原因用到全局变量,如果全局变量只在一个js里使用,那就没问题,但如果变量在不同的js文件里出现,这时隐藏的问题就会开始暴露,也许你能很快修复出现的BUG,又或许全无头绪。
在js文件中使用json在序列化和反序列化
3.尽量不使用eval()函数
它的开销比较大,会将源代码转为可执行的代码,所以用JSON.stringify()和JSON.parse()来额代替
注:但是这里也需要注意IE7和IE8不支持JSON对象, 所以有时候用这个方法还是很必要的
4.不要使用for in函数
1.性能没有这么好
2.可能会产生意外的bug
一般是一下写法
5.underfined、null、0、false、NaN、空字符串的逻辑结果均为false,
正是这样会有“隐含的类型强制转换”,如
这样会引起以上结果全为false。
6.javascript的运算方式
在 (2+3+“6”)这一表达式中,计算的结果为56 ,由于2和3是数组类型,同时javascript的运算是从左到右。
如果是(“6”+2+3)则结果为623,这是由于表达式中第一个是字符串,则进行了强制转换。
在写js代码的时候,经常会因为这样或者那样的原因用到全局变量,如果全局变量只在一个js里使用,那就没问题,但如果变量在不同的js文件里出现,这时隐藏的问题就会开始暴露,也许你能很快修复出现的BUG,又或许全无头绪。
在js文件中使用json在序列化和反序列化
[code] var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; var stringFromPerson = JSON.stringify(person); //对象转为字符串 /* stringFromPerson 结果为 {"name":"Saad","age":26,"department": {"ID":15,"name":"R&D"}}" */ var personFromString = JSON.parse(stringFromPerson); //字符串变为对象 /* personFromString 的值与 person 对象相同 */
3.尽量不使用eval()函数
它的开销比较大,会将源代码转为可执行的代码,所以用JSON.stringify()和JSON.parse()来额代替
注:但是这里也需要注意IE7和IE8不支持JSON对象, 所以有时候用这个方法还是很必要的
[code] 方式1: json1 = eval("(" + jsonStr + ")"), 方式2: json2 = (new Function("return " + jsonStr))();
4.不要使用for in函数
1.性能没有这么好
2.可能会产生意外的bug
[code] 如:下列代码 var x=[1]; for(var s in x){ alert(s); }; 其中如果Array类被扩展的话,如添加了一个新的方法, 这个alert()方法就会执行两次,所以就可能导致错误。
一般是一下写法
[code] for(var i=0,len=array.length;i<len;i++){ //这样的话,不同于i<array.length,这样会每次循环都进行初始化一次 }
5.underfined、null、0、false、NaN、空字符串的逻辑结果均为false,
正是这样会有“隐含的类型强制转换”,如
[code] var propertyname = [underfined、null、0、false、NaN,'']; for(var i=0,len=propertyname .length;i<len;i++){ if(obj[propertyname [i]]){ return true; } return false; }
这样会引起以上结果全为false。
6.javascript的运算方式
在 (2+3+“6”)这一表达式中,计算的结果为56 ,由于2和3是数组类型,同时javascript的运算是从左到右。
如果是(“6”+2+3)则结果为623,这是由于表达式中第一个是字符串,则进行了强制转换。
相关文章推荐
- 在js中使用createElement创建HTML对象和元素
- 深入探究使JavaScript动画流畅的一些方法
- jsp页面运行错误的问题解决方式
- 各项技巧总结:css/js/正则等(Editplus版)
- jsp页面乱码问题的解决
- extjs4之动态列的实现
- js 设置cookie
- 在JavaScript中实现命名空间
- js块元素和内联元素的种种恩怨
- JS日期比较函数
- JavaScript-tips
- JS将UTC格式日期字串转换成日期DATE对象
- JS将科学计数法字串转换成正常数值
- JS中showModalDialog 详细使用(转)
- 随记数组和javascript的技巧
- JSON
- js数组最大值max和最小值min
- JS中window.showModalDialog()详解
- jstree自定义contextmenu
- 带有checkbox的jstree封装