JS杂记
1、Undefined 与 Null 的区别
Undefined 与 null 的值相等,但类型不相等。在js中,undefined表示没有值的变量。null是“nothing”,它被看做不存在的事物,但它是一个空对象。
2、不要把字符串创建为对象
字符串可以是对象。通常,js字符串是原始值,通过字面方式创建,但是也可以通过new定义为对象,但是不要把字符串创建为对象。它会拖慢执行速度。new关键字使代码复杂化,也可能产生一些意想不到的结果。
相等==运算符需要值相等
=== 运算符需要类型和值同时相等
甚至更糟,对象无法比较。
var x = new String("Bill"); var y = new String("Bill");// (x == y) 为 false,因为 x 和 y 是不同的对象
var x = new String("Bill"); var y = new String("Bill");// (x === y) 为 false,因为 x 和 y 是不同的对象
3、查找/检索字符串中的字符串
1)查找
indexOf() 方法返回字符串中指定文本首次出现的索引(位置):
lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引:
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。
2)检索
search() 方法搜索特定值的字符串,并返回匹配的位置。
//eg:举例
var str = "The full name of China is the People's Republic of China.";
var pos = str.search("locate");
3)两种方法,indexOf() 与 search(),是相等的。但是也有区别。
区别在于:
search() 方法无法设置第二个开始位置参数。
indexOf() 方法无法设置更强大的搜索值(正则表达式)。
4、提取部分字符串
有三种提取部分字符串的方法
1)slice(start, end)
2)substring(start, end)
3)substr(start, length)
注意:slice() 可以接受负的索引,substring不可以接受负的索引。substr第二个参数是长度,它也可以接受负的索引。
5、替换字符串内容
replace() 只替换首个匹配,对大小写敏感。若让它不敏感,要使用/替换之前的/i
str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3School");
替换所有的:用/....../g
str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3School");
6、Javascript数值始终是64位浮点数
7、NaN
NaN属于js保留词,指示某个数不是合法数。
注意:数字字符串做算数运算,得到的结果是一个数值或字符串,不会是NaN。
判断是否为NaN有个方法:isNaN()
typeof NaN 返回:number
8、infinity
infinity(或-Infinity)是js在计算数时可能超过最大可能数范围时返回的值。typeof(infinity)
infinity极大值,-infinity极小值