js的一些进阶知识
2020-02-16 17:59
253 查看
如果你对js基础有所掌握,并了解作用域,原型链等基本知识。下面的文字也许对你有所帮助:
(一)参数
1、使用按字母顺序排列的单字符参数
因为参数要尽量简短,而且在函数生命周期可能要被重用,所以使用排序后的单字符参数比使用具有实际意义的单词更值得提倡。代码举例:
function(t,d,v,i,f){...} //before
function(a,b,c,d,e){...} //after
2、不要用lengh去判断函数是否存在入参
arguments.length>1||(cb=alert) //before
1 in arguments||(cb=alert) //after
3、参数运算
保证代码可读性高的前提下,尽量在传参时进行变量的运算。
a=b<<1+a;x(a,1); // before
x(a=b<<1+a,1); // after
4、当一个函数声明为无参时,可以在括号内进行变量计算。
((a=b.pop(),b.pop())+c+a) // before
((b.pop(a=b.pop())+c+a)) // after
(二)变量
1、在参数中声明变量,取代函数体内部声明变量,因为作用域的缘故,读取参数变量较之私有变量性能更高:
function(a){var b=1;...} // before
function(a,b){b=1;...} // after
当然,以函数体内部用声明变量可以降低函数的参数污染,提高代码的可读性,要看程序员如何取舍了:
function(a,b,c,d){b=1;c=2;d=3;...} // before
function(a){var b=1,c=2,d=3;...} // after
2、重复利用不再使用的变量,可节约存储空间:
setTimeout(function(){for(var i=10;i--;)... }, a) // before
setTimeout(function(){for(a=10;a--;)... }, a) // after
3、既然赋值运算可以返回被赋值的变量,那么将赋值运算放在条件判断中更能节省空间。
a=this.localStorage;if(a){...} // before
if(a=this.localStorage){...} // after
4、用数组来交换变量,使代码更简洁
var a=1,b=2,c;c=a;a=b;b=c // before
var a=1,b=2;a=[b,b=a][0] // after
5、Js的弱类型特性,使得不同类型变量间可以进行运算。这既有优点也有缺点,所以在函数中要尽量减少负数的出现,如果出现负数,也尽量使用字符类型如”-10”,而不是数字类型-10。
(未完待续)
(一)参数
1、使用按字母顺序排列的单字符参数
因为参数要尽量简短,而且在函数生命周期可能要被重用,所以使用排序后的单字符参数比使用具有实际意义的单词更值得提倡。代码举例:
function(t,d,v,i,f){...} //before
function(a,b,c,d,e){...} //after
2、不要用lengh去判断函数是否存在入参
arguments.length>1||(cb=alert) //before
1 in arguments||(cb=alert) //after
3、参数运算
保证代码可读性高的前提下,尽量在传参时进行变量的运算。
a=b<<1+a;x(a,1); // before
x(a=b<<1+a,1); // after
4、当一个函数声明为无参时,可以在括号内进行变量计算。
((a=b.pop(),b.pop())+c+a) // before
((b.pop(a=b.pop())+c+a)) // after
(二)变量
1、在参数中声明变量,取代函数体内部声明变量,因为作用域的缘故,读取参数变量较之私有变量性能更高:
function(a){var b=1;...} // before
function(a,b){b=1;...} // after
当然,以函数体内部用声明变量可以降低函数的参数污染,提高代码的可读性,要看程序员如何取舍了:
function(a,b,c,d){b=1;c=2;d=3;...} // before
function(a){var b=1,c=2,d=3;...} // after
2、重复利用不再使用的变量,可节约存储空间:
setTimeout(function(){for(var i=10;i--;)... }, a) // before
setTimeout(function(){for(a=10;a--;)... }, a) // after
3、既然赋值运算可以返回被赋值的变量,那么将赋值运算放在条件判断中更能节省空间。
a=this.localStorage;if(a){...} // before
if(a=this.localStorage){...} // after
4、用数组来交换变量,使代码更简洁
var a=1,b=2,c;c=a;a=b;b=c // before
var a=1,b=2;a=[b,b=a][0] // after
5、Js的弱类型特性,使得不同类型变量间可以进行运算。这既有优点也有缺点,所以在函数中要尽量减少负数的出现,如果出现负数,也尽量使用字符类型如”-10”,而不是数字类型-10。
(未完待续)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- JavaScript简介
- json格式转换
- 完美extjs教程
- 源生JS、canvas画图,支持拖拽
- JSP数据交互
- JS 实现元素颜色跟随滚动条变化
- JavaScript声明全局变量三种方式的异同
- javascript 获取URL各个部分的功能
- 简单的选项卡(html + css + js)
- JS使图片在图片框中自适应,按比例缩放
- JS简易拖拽效果
- Js中 关于top、clientTop、scrollTop、offsetTop的用法
- js日期的常用操作
- JS实现以日历形式显示当前时间
- 完整显示当前日期和时间的JS代码(2007年2月25日星期日正午12:42:48)
- JS左侧菜单-04
- JS关闭当前页面的方法
- C#代码和javascript函数相互调用
- JavaScript学习笔记
- java C# javascript css 资源共享