substring()和substr()
这两个家伙笔者老是傻傻分不清
相同点:
1.当只填写一个合法参数(索引)的时候,都是以该索引为起点,截取至整个字符串;
2.都不会修改原来的字符串;
var str1 = 'abcdefg';
console.log( str1.substring(1) ) // 结果是: ‘bcdefg’
console.log( str1.substr(1) ) //结果也是 :’bcdefg‘
不同点:
- substring( startIndex,endIndex)
var str1 = 'abcdefghijk';
console.log( str1.substring(1,6) ) //bcdef 开始的索引,和结束的索引的前一个位置
- substring( )里的两个参数分别是 : 开始的索引,和 结束的索引。
- 它不会修改原来的字符串,而是会返回一个 ‘填入的参数区间的字符串
- 不过要注意的是,结束的索引不包括结束索引本身,而是结束索引的前一个位置
- 所以笔者会这样去记它的结果表现: substring( startIndex,endIndex-1 )
- substr( startIndex,length )
- substr( )里的两个参数分别是 : 开始的索引,和 开始索引为起点选择的长度(个数)。
var str2 = 'abcdefghijk';
console.log( str2.substr(2,6) ) //结果是:cdefgh
字符串和数字,字符串和字符串的比较
console.log( “20” > 100 ) == > false;
console.log( “20” > “100” ) == >true;
(1)字符串和数字进行比较的时候,会把 字符串Number( )一下,在进行两边比较
(2)字符串和字符串比较的时候,两边会用 charCodeAt( ) 进行转码成ASCII码 进行比较
注意的是:当字符串与字符串进行比较的时候,大于9 以后的字符串数字,会以开头第一个字符的ASCII来赋值。
所以你会发现 “20”.charCodeAt() ===> 50; 50其实对应的 字符数字值是 2
而 “100”.charCodeAt() ===> 是49; 49对应的字符数字值是 1
所以 : console.log(“20”>“100”) 结果是true!
“xxx”.charCodeAt() 还有个反向方法,即根据某个ASCII码,获取到对应的字符串值
: String.fromCharCode(ASCII CODE)
比如
console.log(String.fromCharCode(49))
打印结果是: 字符数字 1