博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(第二章)改善JavaScript,编写高质量代码。
阅读量:7152 次
发布时间:2019-06-29

本文共 2463 字,大约阅读时间需要 8 分钟。

建议34:字符串是非值操作

var a = "javascript";var b = a;b = b.toUpperCase();alert(a);  //javascript;alert(b); //JAVASCRIPT;
建议34

建议35:获取字节长度

String.prototype.lengthBD = function(){  var b = 0; l = this.length;  if(l){    for(var i = 0; i < l; i++){      if(this.charCodeAt(i) > 255){        b+=2;      }else{        b++;      }    }    return b;  }else{    return 0;  }}var s= "String对象长度";alert(s.lengthDB()); //14  中文为2个数字
建议35

建议36:警惕字符串链接操作

当连接少量字符串时,例如:str += "one" + " two";JavaScript在执行这行代码时会进行以下4个步骤:第一步,在内存中创建一个临时字符串。第二步,临时字符串的值被赋予"onetwo",第三步,临时字符串与str的值进行连接,第四步,把结果赋予str。不过,通过下面的代码进行优化能够提高执行效率,两个离散表达式直接将内容附加到str上,避免了临时字符串(第一步和第二步),这样做可以使执行速度提高10%~40%;str += "one";str += "two";实际上,也可以用以下一行代码实现同样的性能提高,例如:str = str + "one" + "two";也就是说 str要在开头,如str = "one" + str + "two" 就会失去这种优化。
建议36

建议37:推荐使用replace

replace方法同时执行查找和替换两个操作。var s = "javascript";var b = s.replace(/(java)(script)/,"$2-$1");alert(b);   // "script-java";1.$1、$2、...、$99:与正则表达式中的第1~99个子表达式相匹配的文本。2.$&:与正则表达式相匹配的子字符串。3.$`:位于匹配字符串左侧的文本。4.$':位于匹配字符串右侧的文本。5.$$:表示$符号。
建议37

建议38:正确认识正则表达式工作机制

 

建议39:正确理解正则表达式回溯

建议40:正确使用正则表达式分组

建议41:正确使用正则表达式引用

建议42:用好正则表达式静态值

建议43:使用exec增强正则表达式功能

建议44:正确使用原子组

建议45:警惕嵌套量词和回溯失控

建议46:提高正则表达式执行效率 

建议47:避免使用正则表达式的场景

 

建议48:慎用正则表达式修剪字符串

建议49:比较数组与对象同源特征

建议50:正则检测数组类型

建议51:理解数组长度的有限性和无限性

建议52:建议使用splice删除数组

var number = ['zero','one','two','three','four','five'];delete numbers[2];number = ['zero','one',undefined,'three','four','five'];var number = ['zero','one','two','three','four','five'];numbers.splice(2,1);number = ['zero','one','three','four','five'];这对大型数组来说效率会更高。
建议52

建议53:小心使用数组维度

建议54:增强数组排序的sort功能

//从小到大排序function f(a,b){  return (a-b)}var a = [3,1,2,4,5,7,8,0,9,6];a.sort(f);alert(a); // [0,1,2,3,4,5,6,7,8,9];//从大到小排序function f(a,b){  return -(a-b)}var a = [3,1,2,4,5,7,8,0,9,6];a.sort(f);alert(a); // [9,8,7,6,5,4,3,2,1,0];//根据奇偶性质排列数组 奇数在前function f(a,b){  var a = a%2;  var b = b%2;  if(a==0){return 1;}  if(b==0){return -1;}}var a = [3,1,2,4,5,7,6,8,0,9];a.sort(f);alert(a); //[3,1,5,7,9,0,8,6,4,2];//根据奇偶性质排列数组 偶数在前function f(a,b){  var a = a%2;  var b = b%2;  if(a==0){return -1;}  if(b==0){return 1;}}var a = [3,1,2,4,5,7,6,8,0,9];a.sort(f);alert(a); //[0,8,6,4,2,6,8,3,1,5,7,9];
建议54

建议55:不要拘泥于数字下标

var a = [];a[-1] = 1; //为下标位-1的元素赋值很明显,上面的用法是非法的。因为这不符合语法规范,使用length属性检查,返回值为0,说明数组并没有增加长度,这是正确的,也是正常的,但是,使用下面的方法可以读取该元素的值。alert(a.length); // 0alert(a[-1]);alert(a["-1"]);
建议55

建议56:使用arguments模拟重载

转载于:https://www.cnblogs.com/xueweijie/p/7864877.html

你可能感兴趣的文章
CSS选择器以及优先级与匹配原理
查看>>
PostgreSQL security - don't use password method in pg_hba.conf
查看>>
RDS MySql支持online ddl
查看>>
在Hudson中,使用ant自动对安卓项目编译打包apk
查看>>
【JSP开发】利用request获取各种值
查看>>
Vue全家桶web端社区项目
查看>>
多次Push Pop导致的`Can't add self as subview`问题
查看>>
从萌新的角度理解JVM内存管理
查看>>
d3.js 关于力引导图的简单解析
查看>>
pm2实践指南
查看>>
preload和prefetch
查看>>
Sentry 部署踩坑记
查看>>
哦屋~如此完美的富文本编辑器你值得拥有
查看>>
LeetCode 之 JavaScript 解答第226题 —— 翻转二叉树(Invert Binary Tree)
查看>>
去中心化应用的五大制胜关键
查看>>
CSS布局相关
查看>>
ES6新特性
查看>>
2019年5月-一个从业近两年的小白遇到的面试题
查看>>
伪类选择器和伪元素选择器
查看>>
DeepMind AI与人类合作玩夺旗策略游戏,表现与人类玩家相当
查看>>