《Effective JavaScript》编写高质量的Javascript代码的68个有效方法-读书笔记
2014-08-02 12:37 臭小子1983 阅读(394) 评论(0) 编辑 收藏 举报一、让自己习惯JavaScript
一、当心隐式转换
数字和字符串相加返回字符串
1 + "2" = "12"; 1 + 2 + "3" = "33"
NaN:”Not a Number”不是一个数字,
isNaN():来判断是不是一个不是数字,如果是数字返回false,否则返回true
判断函数参数是否存在:
funtion point(x, y){
if ( typeof x === "undefined") { x = 320 }
if ( typeof y === "undefined") { y = 320 }
}
二、相等与绝对相等
==、===
==的强制转换:
1、44 == "44" 返回true,
2、undefined == null 返回true;
三、分号的自动插入
javascript分号插入的规则
1、分号在 } 标记之前一个或多个换行之后和程序输入的结尾被插入
1 <script> 2 function square(x) { 3 var n = +x 4 return n * n 5 } 6 7 function area(r) { r = +r; return Math.PI * r * r} 8 </script>
二、变量作用域
一、尽量少用全局对象
避免声明全局变量,使用局部变量
避免对全局对象添加属性,使用全局对象来做平台特性检测.
二、使用声明的局部变量
局部变量如果不使用var 声明,那么该变量隐式的转换成全局变量
三、熟悉掌握闭包
闭包:内部函数调用外部函数的变量,当函数结束时变量在内存中不会释放,ie下会导致内存泄露浏览器崩溃
1 <script> 2 function maskSandWich(){ 3 var maric = 1; 4 5 function make(filling){ 6 return maric++ + " and " + filling; 7 } 8 9 return make; 10 } 11 12 var f = maskSandWich(); 13 console.log(f("ss")); // 1and ss 14 console.log(f("ss")); // 2and ss 15 console.log(f("ss")); // 3and ss 16 console.log(f("ss")); // 4and ss 17 </script>
六、库和API设计
54、将undefined看做“没有值”
当js没有具体的值的时候就返回undefined,未赋值的变量也返回undefined
如:
var x; console.log(x); // undefined
var obj = {}; conole.log(obj.x); // 未找到对象属性值返回undefined
function f() { return ; }; // 返回undefined
55、接收关键字参数的选项对象
一个函数的参数过多,又要记住参数的位置,又不利于扩展。
var alert = new Alert(a, b, c, d ,e ,f, g);
可以改写成:
var alert = new Alert({a:0, b:1, c:2, d:3, e:4});