一、全局命名空间污染
总是将代码包裹在一个立即的函数表达式里面,形成一个独立的模块。
不推荐
var x = 10, y = 100;console.log(window.x + ' ' + window.y);
推荐
;(function(window){ 'use strict'; var x = 10, y = 100; console.log(window.x + ' ' + window.y);}(window));
二、立即执行函数
在立即执行函数里面,如果有用到全局变量应该通过变量传递的方式,让立即执行函数的函数体在调用时,能以局部变量的形式调用,在一定程度上提升程序性能。
并且应该在立即执行函数的形参里加上undefined
,在最后一个位置,这是因为ES3里undefined
是可以读写的,如果在全局位置更改undefined
的值,你的代码可能得不到逾期的结果。
另外推荐在立即执行函数开始跟结尾都添加上分号,避免在合并时因为别人的代码不规范而影响到我们自己的代码
不推荐
(function(){ 'use strict'; var x = 10, y = 100, c, elem=$('body'); console.log(window.x + ' ' + window.y); $(document).on('click',function(){ }); if(typeof c==='undefined'){ //你的代码 }}());
推荐
;(function($,window,document,undefined){ 'use strict'; var x = 10, y = 100, c, elem=$('body'); console.log(window.x + ' ' + window.y); $(document).on('click',function(){ }); if(typeof c==='undefined'){ //你的代码 }}(jQuery,window,document));
三、严格模式
ECMAScript 5 严格模式可在整个脚本或独个方法内被激活。它对应不同的 javascript 语境会做更加严格的错误检查。严格模式也确保了 javascript 代码更加的健壮,运行的也更加快速。
严格模式会阻止使用在未来很可能被引入的预留关键字。
你应该在你的脚本中启用严格模式,最好是在独立的 立即执行函数 中应用它。避免在你的脚本第一行使用它而导致你的所有脚本都启动了严格模式,这有可能会引发一些第三方类库的问题。
不推荐
'use strict';(function(){}());
推荐
(function(){ 'use strict';}());
四、变量声明
对所有的变量声明,我们都应该指定var
,如果没有指定var
,在严格模式下会报错,并且同一个作用域内的变量应该尽量采用一个var
去声明,多个变量用“,”隔开。
不推荐
function myFun(){ x=5; y=10;}
不完全推荐
function myFun(){ var x=5; var y=10;}
推荐
function myFun(){ var x=5, y=10;}
五、使用带类型判断的比较判断
新闻热点
疑难解答
图片精选