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

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

建议34

建议35:获取字节长度

String.prototype.lengthBD = function(){
var b = ; l = this.length;
if(l){
for(var i = ; i < l; i++){
if(this.charCodeAt(i) > ){
b+=;
}else{
b++;
}
}
return b;
}else{
return ;
}
} 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); // 0
alert(a[-1]);
alert(a["-1"]);

建议55

建议56:使用arguments模拟重载

(第二章)改善JavaScript,编写高质量代码。的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  2. (第一章)改善JavaScript,编写高质量代码。

    根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...

  3. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  4. 编写高质量代码改善python程序91个建议学习01

    编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...

  5. 编写高质量代码改善C#程序的157个建议——建议4: TryParse比Parse好

    建议4: TryParse比Parse好 如果注意观察除string外的所有基元类型,会发现它们都有两个将字符串转型为本身的方法:Parse和TryParse.以类型double为例,这两个方法最简单 ...

  6. 编写高质量代码改善C#程序的157个建议——导航开篇

    前言 由于最近工作重心的转移,原来和几个同事一起开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展.打个比方,现在已经上线的项目行政案件的Web管理网站(代码还没那么多相比较即将要 ...

  7. 编写高质量代码--改善python程序的建议(六)

    原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修 ...

  8. 编写高质量代码--改善python程序的建议(八)

    原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax, ...

  9. 编写高质量代码改善java程序的151个建议——导航开篇

    2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...

  10. 编写高质量代码改善C#程序的157个建议[1-3]

    原文:编写高质量代码改善C#程序的157个建议[1-3] 前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理 ...

随机推荐

  1. SpringBoot(七) Working with data: SQL

    一.JdbcTemplate 二.Spring-data-jpa 实体类 继承JpaRepository<T,ID> 的接口,来访问数据库 30.3 JPA and Spring Data ...

  2. mybatis自动生成代码,逆向工程

    https://gitee.com/yangliuwin/mybatis_reverse_engineering.git

  3. python 字符串居中

    下面的代码可以让字符串居中,左对齐和右对齐,字符串长度设置为50,居中后左右补充空格,右对齐会在左侧补充空格 string1 = "Now I am here." print( s ...

  4. 第二十六天- C/S架构 通信流程 socket

    1.C/S架构 C/S架构:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可是物理层面)来划分的.这里客户端一般指需先安装再执行的应用程序,对操作系统依赖性较 ...

  5. NOIP2017 题解

    QAQ--由于没报上名并没能亲自去,自己切一切题聊以慰藉吧-- 可能等到省选的时候我就没有能力再不看题解自己切省选题了--辣鸡HZ毁我青春 D1T1 小凯的疑惑 地球人都会做,懒得写题解了-- D1T ...

  6. css+div水平居中

    实现div内容水平居中 实现方案一:margin:0 auto; div{ height:100px; width:100px; background:red; margin:0 auto; } &l ...

  7. ArcGIS10+:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS

    ArcGIS10+版本,使用VS创建一个简单的AE应用程序,然后拖放一个toolbar.LicenseControl以及MapControl控件. 接着编译应用程序,编译成功. 然后单击F5运行程序, ...

  8. Java并发编程指南

    多线程是实现并发机制的一种有效手段.在 Java 中实现多线程有两种手段,一种是继承 Thread 类,另一种就是实现 Runnable/Callable 接口. java.util.concurre ...

  9. 从CVE-2018-1273看漏洞分析

    漏洞分析的边界 漏洞分析最应该关注的是漏洞相关的代码,至于其余的代码可以通过关键位置下断点,来理解大概功能. 其中最关键的就是了解数据流,找到离漏洞位置最近的 原始数据 经过的位置,然后开始往下分析, ...

  10. FastDFS部署安装全过程

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/153205 ...