全局命名空间的定义
在定义全局函数以及变量时,使用正确的全局命名空间。
错误做法:
var a = 10;
var b = 20;
规范格式
;function(window){
'use strict';
var a = 10;
var b = 20;
}(window);
立即执行函数
立即执行函数对全局变量的引用应该通过参数的形式来进行,即以局部变量的形式来进行。
错误做法:
(function(){
var a = 10;
var b = 20;
var c = window.a + window.b;
$("body").click(function(){
});
});
规范格式:
;(function($,window){
var a = 10;
var b = 20;
var c = window.a + window.b;
$("body").click(function(){
});
});
严格模式
严格模式可在整个脚本或者某个方法内被指定,它可以对当前作用域下的js内容进行更严格的检查,以防止代码中出现未来可能出现的js关键字,同时也确保的js代码的健壮性。我们应该尽可能确保严格模式作用域方法内,而不要作用域函数内,以保证第三方类库的兼容性。
错误做法:
'use strict'
;(function(){
});
规范格式:
;(function(){
'use strict';
})
语句块内的函数声明
我们应该禁止在语句块内对函数做声明定义,正确的做法是对函数的定义放在作用域的顶部,而在语句块内进行赋值操作。
错误做法:
if(a){
function test(){}
}
规范做法
if(a){
var test = function(){}
}