JavaScript的一些常见误区

405 查看

接触JavaScript两年多遇到过各种错误,其中有一些让人防不胜防,原来对JavaScript的误会如此之深,仅以此文总结一下常见的各种想当然的误区。

String replace

string的replace方法我们经常用,替换string中的某些字符,语法像这样子

第一个参数是要查找的字符串或者一个正则表达式,第二个参数是想替换成的字符串或一个方法,我们可以这么使用

记过和我们想得一样,但是

和我们预期的不一样,第二个‘n’没有被替换。字符串的 replace 方法如果第一个参数传入字符串,那么只有第一个匹配项会被替换。如果要替换全部匹配项,需要传入一个 RegExp 对象并指定其 global 属性。

这样才可以达到我们目的,关于string replace方法详细使用可以看看JavaScript string 的replace

Date 对象

我们可以这样构造一个Date对象

前三种方式没有什么问题,但第四种得到的结果回合我们预期的不一致

我们可以看到,传入的月份是08,返回的结果却是九月。这是因为Date对象的月份是从0开始计数的(天却不是),即0代表一月,1代表二月…11代表12月。在调用Date实例的getMonth方法时尤其要注意

Date.parse

Date.parse方法可以识别两种格式的字符串参数(标准的长日期格式,比如带星期的那种,也可以识别,不过不常用)

1. “M/d/yyyy”: 美国的日期显示格式。如果年传入2位则作为 19xx 处理

2.”yyyy-MM-dd” 或 “yyyy/MM/dd”: 注意月和日都必须是两位

Date.parse 的返回结果不是一个Date对象,而是从1970-01-01午夜(GMT)到给定日期之间的毫秒数。可以用Date的构造函数将其转换为Date对象。

for…in 遍历数组

for…in用来遍历一个对象中的成员(属性,方法),如果用来遍历数组的到的结果并不是预期中数组每项的值,方法神马的会被遍历出来