标签:
原文地址:
1). JavaScript Best Practices: http://www.w3schools.com/js/js_function_closures.asp
2). JavaScript Closures http://www.w3schools.com/js/js_function_closures.asp
3). JavaScript 严格模式 http://blog.csdn.net/supersky07/article/details/14129179
1. 关于全局变量
2. 闭包
var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add(); // the counter is now 3
变量 add 的初始值为 一个self-invoking函数的返回值,这个self-invoking的函数只执行一次。通过上述代码,我们成功地将 add 变成了函数,而且它还可以访问那个函数的的parent scipe的变量 - counter。
这个例子就叫做 JavaScript 闭包,使得 JS 中实现“private” 变量成为可能。上述例子中的 counter 是由匿名函数的scope保护的,而且只能通过 add 函数访问。
3. Strict mode
4. 将变量声明放在函数或脚本的最上面,声明时将变量初始化
5. 不要使用 new Object()
6. 注意类型自动转换
var x = "Hello"; // typeof x is a string x = 5; // changes typeof x to a number
当进行数学运算时, JS 可以将数字转成字符串
var x = 5 + 7; // x.valueOf() is 12, typeof x is a number var x = 5 + "7"; // x.valueOf() is 57, typeof x is a string var x = "5" + 7; // x.valueOf() is 57, typeof x is a string var x = 5 - 7; // x.valueOf() is -2, typeof x is a number var x = 5 - "7"; // x.valueOf() is -2, typeof x is a number var x = "5" - 7; // x.valueOf() is -2, typeof x is a number var x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
两个字符串相减,不会出错而是返回 NaN (Not a Number)
"Hello" - "Dolly" // returns NaN
7. 三个等号
== 两个等号做对比时,会将操作数做类型转换;
=== 三个等号做对比时,会强制比较操作数类型的值
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
8. 当一个函数调用时没有传递参数,参数值将被设置为 undefined
9. 避免使用eval()- eval()可以将text 作为code执行
转载 - 读网上文档 - 笔记 - JS 编程最佳实践(Best Practice)
标签:
原文地址:http://www.cnblogs.com/simpeng/p/4604243.html