前端开发,如何写出优秀js代码

时间: 2017-11-11阅读: 1586标签: 前端

什么样的代码是最优秀的的?我总结的大概分为三点:性能好,简单优雅,通俗易懂,这篇文章就将围绕这这3点来说明,当然也会讲解一些小技巧。

1.性能好效率高,浏览器中运行效率高的代码。

1.避免全局查找,变量搜索顺序为:先局部,后全局;先解析,后赋值  
var num=1;
;((w)=>{//添加分号,主要为了防止匿名函数调用上一行定义的函数
    console.log(num);//输出nudefined
    console.log(w.num);//输出1
    var num=10;
    console.log(num);//输出10,代表先搜索局部变量
})(window)


2.条件判断,按可能性从高到低,减少条件执行次数
function getStr(){
	var num=Math.floor(Math.random()*10+1);//1到10的随机数
	switch(true){//注意:如果改为num,case里不能写为范围,只能是变量
		case num<8:
			return '1-7之间数字'+num;
		case num===8 || num===9:
			return '8-9之间的数字:'+num;
		case 10:
			return num;
		default:
			return 'default'
	}
}
console.log(getStr());


3.各种类型转换,通过js特殊方式
//将数字转换成字符串
var num=1,
    num_str=""+num;
console.log(num_str+'类型是'+(typeof num_str));//1类型是string
//将字符串转换为其他类型
var str="13.14",
    str_int = ~ ~str, 
    str_float = 1 * str, 
    str_bool = !!str, 
    str_array = [str]; 
console.log(str_int+'类型是'+(typeof str_int));//13类型是number
console.log(str_float+'类型是'+(typeof str_float));//13.14类型是number
console.log(str_bool+'类型是'+(typeof str_bool));//true类型是boolean
console.log(str_array+'类型是'+(typeof str_array));//13.14类型是object

虽然看上去有点丑,但效率却要比parseInt(),parseFloat()等高些,当然使用toString()方法来进行类型转换的也是值得推荐的。


4.优化js的加载

比如通过使用defer,async属性实现js的延迟加载,使用document.createElement ("script")的方式动态加载js等,合并压缩js文件来减少http请求等等


5.其它

能不使用with语句的时候尽量不要使用with语句。

尽量少使用eval ,每次使用eval需要消耗大量时间。

 少使用document.write来给页面生成内容,多用innerHtml来添加。

删除dom节点之前,一定要删除注册在该节点上的事件。 

通过javascript创建的dom对象,必须append到页面中。

......


2.简洁优雅,用最少的字符写出同样的功能。

1.使用三目运算
var a=1,b=2;num;
if (a>b){
 num = a;
}else{
 num=b;
}
//可以替换为:
var num = a > b ? a : b;


2.变量递增/递减/乘/除
var num=10
num =num + 1;
num =num - 1;
//改下为
++num;
--num;
/*其它加减乘除*/
num += 2;
num -= 2;
num *= 2; 
num /= 2;


3.数组和遍历
var a=new Array(); 
a[0]="ab"
a[1]="ac"
a[2]="ad"
for(var x=0;x<a.length;x++) 
{ 
   console.log(a[x]);
} 
//简洁的写法是 
var a=['ab','ac','ad']; 
for(var x in a) 
{ 
    console.log(a[x]);
}


4.一个function就做一件事,拥有统一的属性通过继承实现
function person(name){//定义一个公用类代表:人
  this.name = name || 'default';//属性-名称
  this.eat= function(){//方法-吃饭
    console.log(this.name + '在吃饭!');
  };
  this.sleep=function(){//方法-睡觉,不同的方法分开写,只用于处理一件事
    console.log(this.name+'在睡觉');
   };
}
function man(name){//男人
  	person.call(this);//拥有人类的特征
  	if(name!=undefined){
  		this.name = name;
  	}
}

(function(){
  var Super = function(){};
  Super.prototype = person.prototype;  
  man.prototype = new Super();
})();
var m = new man('tony');
console.log(m.name);//tony
console.log(m.eat());//tony在吃饭
console.log(m instanceof person); // true
console.log(m instanceof man); //true


3.通俗易懂,除了自己他人很快能读懂你的思想。

1.命名规范
const RUNTIME_PATH= "./Runtime/";//常量定义不要使用var,名称用大写“_”隔开。
_fn: function () {} //对象内提供给内部调用的接口,通过“_”作为开头。
let num=0;//作用域被限制在块级中的变量的定义。
function fnGetName(){};//方面命名尽量使用驼峰式。

原则是:

变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号

变量命名长度应该尽可能的短,并抓住要点,尽量在变量名中体现出值的类型

尽量避免使用没有意义的命名

禁止使用JavaScript关键词、保留字全名

变量名命名方法常见的有匈牙利命名法、驼峰命名法和帕斯卡命名法


2.变量定义始终在前

无论使用let,var来定义变量,我们尽量把它们写在最前面,多个变量可以用过逗号隔开


3.多使用try catch语句
try {
   //语句
}catch (e) {
  //出错怎么办
}finally{
   //无论结果都会执行的
}

这样能很好的让我们捕获错误。当错误发生时JavaScript 会停止执行,并生成一个错误信息。如果你将 throw 和 try 、 catch一起使用,就可以控制程序输出的错误信息。


4.总结:

我不是个伟大的程序员,我只是个有着一些优秀习惯的程序员而已与君共勉愿君写的代码就像阅读优美的文章一样让人流连忘返。还有更多的建议请留言,分享您的知识和经验。


一个十年老前端的感悟

今年整体的大环境不太好,经济处于一个下行周期,是下行周期的哪个部位不太好说。我觉得房地产也大概率会处于一个长期横盘的趋势。IT就业更是有点惨淡之势,在这漫漫长夜,希望所有的年轻人平时多学习,自律,增长自己的知识和远见,磨炼自己的心性

Serverless 给前端带来了什么?

Serverless 是一种 “无服务器架构”,让用户无需关心程序运行环境、资源及数量,只要将精力 Focus 到业务逻辑上的技术。现在公司已经实现 DevOps 化,正在向 Serverless 迈进,而为什么前端要关注 Serverless?

剖析前端开发中的防抖和节流

节流是保证在一段时间内,代码只执行了一次。防抖其实和节流有些类似,毕竟它们的最终目的都是如出一辙。防抖是在一段时间结束之后,才触发一次事件。

学好前端的 6 点建议

最近接触了很多前端的小伙伴,和他们谈了很多职业发展的问题。他们大部分是做了一到三年的前端新手。在交流中我发现了一个很有意思的现象,大家同样是入门不足三年,一部分感觉前端是一个很有前途的职业,甚至一部分两年经验的前端同学透露年薪已经30W以上了

一篇文章了解大前端

大前端不仅会成为移动开发与Web前端的发展趋势,也将会是未来的显示设备终端的开发技术趋势。大前端将做更多的终端开发、工程化等工作,而不仅仅只是开发Web页面。大前端工程师将能搞定所有端上的开发。与充满争议的全栈工程师相比,它更具可操作性。

大前端摧毁了原生开发者的一切

去年,大前端开始出现。今年,大前端的趋势越来越明显。跨平台技术层出不穷。Qcon、GMTC等一线会议开始设置大的前端话题。阿里、京东、美联以及在哪里开始开展跨平台练习。所有这些都告诉我们,大前端即将到来。

web前端的前景及工资

前端开发行业它不再是一个近两年新兴产业了,但我们有越来越多的人迁移到Web前端开发,在2010年之前,没有高度在这个位置估值仍然是开发者。虽然它有点被称为JS工程师,但是打电话给艺术家或剪画是不好的。

前端能力和后端能力

前端能力和后端能力常常有类比说:人是有操作系统的。譬如我们需要构建自己的操作系统,我们都需要不断升级自己的操作系统 等等,其实更简单一些说,人就如同一个程序,如果这个系统很烂,体验很差。那他做出来的事情,输出出来的东西,就是一团乱麻,没什么实际价值。

一份超全的 web 前端技术进阶指南

优秀的Web前端开发工程师要在知识体系上既要有广度和深度!应该具备快速学习能力。前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化、SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识

前端和后端的区别_为什么很多人选择前端?

什么是前端什么是后端,前端开发和后台开发是有区别的,工作的内容和负责的东西是完全的不同的,下面简单说一下:前端更容易入门,每天调整界面的展示,通过代码 完成优美的界面和酷炫的交互。后端入门稍困难,每天关注的是业务逻辑的处理,数据的增删改查,性能的优化

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录