分享一些JavaScript中不足之处

来源:互联网 发布:sai手绘软件下载 编辑:程序博客网 时间:2024/05/27 00:48

最近看了JavaScript的语言精粹这本书,数中简单明了的介绍了JavaScript这门语言的优美和不足之处,下面分享一些JavaScript中的不足之处,也就是我们在编程中会因其特性而犯错误的一些语言特性。


1)        全局变量:

在微程序中可以带来便利,但在大型程序中为成为令人头痛的问题。

问题:大型程序中,全局变量难以管理。降低了程序的可靠性。如果全局变量的名称碰巧与子程序中变量的名称相同,那么他们将会冲突。导致程序无法运行,而且通常难以调试。

另外定义全局变量的隐示全局变量,容易产生

解决方式:1.规范变量的命名2.模块化方式3.利用函数的闭包特性

2)        作用域

问题:一个代码块会创建一个作用域,代码块中声明的变量在其外部是不可见的,但是JavaScript中确没有提供块级作用域。导致我们在代码块中声明变量时,则在包含此代码块函数的任何位置都是可见的。

解决方式:在每个代码块函数的开头部分声明所有的变量。

3)        自动插入分号:

问题:JavaScript有一个自我修复机制,他通过自动插入分号来修正缺损的程序。这个可能掩盖更为严重的错误。例如:return 语句中插入会产生我们不想要的结果。

return

{test:true};这个返回的回事undefined因为JavaScript会在return后插入分号

解决:return {test:true};这样可以避免。分行显示的句子应该确保单行不容易形成独立的合法的逻辑语义。另外养成分号结束句子的良好习惯。

4)        保留字

问题:保留字不能用来命名变量参数。当被用作对象字面量的键值时,必须用引号括起来。且不能用objec.name形式来访问。只能用[‘name’]形式来访问。

解决:尽量少用保留。能不用则不用

5)        Typeof

问题:typeof运算符返回一个用于识别其运算数类型的字符串。但识别不了null。和其他引用类型。

解决:配合instanceof使用

6)        parseInt

将字符串或者非整数转换成整数。注意:他是一个全局函数。

问题1:在解析字符串时,遇到非数字就会停止,而不会有任何提示。如:

parseInt(“12 parse”);//返回12

问题2:在解析0为开头的字符是如果第二个参数没有传入,则在某些浏览器中会默认为8进制。如:parseInt(“09”);//返回的值为0]

解决:明确字符串中有无非字符。在转换时加上第二个参数10,表示十进制。

7)        “+”运算符

可以用于number的加减,也可以用于字符串的连接。

问题:运行两种不同的类型时,会连接。只有都是整数是才会相加。

解决:确保两者都是整数

原创粉丝点击