• jshint

    jshint

    用'===', '!=='代替'==', '!=';

    for-in里一定要有hasOwnProperty的判断;

    不要在内置对象的原型上添加方法,如Array, Date;

    不要在内层作用域的代码里声明了变量,之后却访问到了外层作用域的同名变量;

    变量不要先使用后声明;

    不要在一句代码中单单使用构造函数,记得将其赋值给某个变量;

    不要在同个作用域下声明同名变量;

    不要在一些不需要的地方加括号,例:delete(a.b);

    不要使用未声明的变量(全局变量需要加到.jshintrc文件的globals属性里面);

    不要声明了变量却不使用;

    不要在应该做比较的地方做赋值;

    debugger不要出现在提交的代码里;

    数组中不要存在空元素;

    不要在循环内部声明函数;

    不要像这样使用构造函数,例:new function () { … }, new Object

    1. // not good
    2. if (a == 1) {
    3. a++;
    4. }
    5. // good
    6. if (a === 1) {
    7. a++;
    8. }
    9. // good
    10. for (key in obj) {
    11. if (obj.hasOwnProperty(key)) {
    12. // be sure that obj[key] belongs to the object and was not inherited
    13. console.log(obj[key]);
    14. }
    15. }
    16. // not good
    17. Array.prototype.count = function(value) {
    18. return 4;
    19. };
    20. // not good
    21. var x = 1;
    22. function test() {
    23. if (true) {
    24. var x = 0;
    25. }
    26. x += 1;
    27. }
    28. // not good
    29. function test() {
    30. console.log(x);
    31. var x = 1;
    32. }
    33. // not good
    34. new Person();
    35. // good
    36. var person = new Person();
    37. // not good
    38. delete(obj.attr);
    39. // good
    40. delete obj.attr;
    41. // not good
    42. if (a = 10) {
    43. a++;
    44. }
    45. // not good
    46. var a = [1, , , 2, 3];
    47. // not good
    48. var nums = [];
    49. for (var i = 0; i < 10; i++) {
    50. (function(i) {
    51. nums[i] = function(j) {
    52. return i + j;
    53. };
    54. }(i));
    55. }
    56. // not good
    57. var singleton = new function() {
    58. var privateVar;
    59. this.publicMethod = function() {
    60. privateVar = 1;
    61. };
    62. this.publicMethod2 = function() {
    63. privateVar = 2;
    64. };
    65. };