一、Es5的语法
严格模式
概念:
由于js的作用域和隐式声明变量等语法会造成很多预想不到的错误,所以ES5中新增了一个严格模式的语法,用于严格规范代码的书写。
语法:
"use strict"
放在代码最前面,也就是在script标签的第一行或者函数内部第一行,不然语法会失效。
严格模式可以规范当前script标签或者当前函数中代码,不能规范除此以外别的代码和函数。
作用:
没有var,不能定义变量
禁止函数形参存在同名现象
禁止函数中用this代表window
优点:
代码更加规范,减少一些不必要的语法错误。
让代码运行速度更快,提高运行效率。
二、字符串
字符串定义
var str='';
var str="";
字符串长度
字符串中字符的个数:字符串.length
字符串取下标
var str = "abcdeffdhgfdgd";
var s = str[6]
console.log(s) // 'f'
字符串遍历
var str = "abcdeffdhgfdgd";
for(var i=0;i<str.length;i++){
console.log(str[i],i)
}
字符串只读
字符串是只读数据,只能读,不能增删改查。
字符串可以比较,但是比较和数字比较不同,字符串比较的大小是由阿斯克码决定的。
字符串比较规则是逐字符进行比较。
console.log('25'>'5')//false
console.log('78'>'123') //true
阿斯克码
三个常用阿斯克码范围
0到9,阿斯克码48到57
A到Z,阿斯克码65到90
a到z,阿斯克码97到122
字符串能比较大小,中文汉字也是字符串,中文汉字也能比较大小
console.log('我'>'你') // true
console.log('你'>'我') // false
中文汉字的大小由unicode来决定。unicode也称万国码。
三、字符串方法
chatAt
作用:通过指定下标获取对应的字符
语法:字符串.charAt(下标)
返回值:返回字符
var str='asdfghjkl'
var m = str.charAt(6)
console.log(m)//结果j
chatCodeAt
作用:通过指定下标获取对应字符的阿斯克码
语法:字符串.chatCodeAt(下标)
返回值:返回字符对应的阿斯克码
var str='asdfghjkl'
var code = str.charCodeAt(3)
console.log(code);//结果102
String.fromCharCode
作用:通过指定的阿斯克码得到对应的字符
语法:String.fromCharCode( )
返回值:返回阿斯克码对应的字符
var res = String.fromCharCode(65)
console.log(res) //结果是A
split
作用:将字符串通过指定的分隔符,组成数组。
语法:字符串.split( )
返回值:返回数组
var str = 'green_red_yellow'
console.log(str);// 结果 green_red_yellow
var str = 'a-b-c-d';
var arr = str.split('-') // 参数为分隔符,使用-将字符串分割为一个数组
console.log(arr) // ['a','b','c','d']
var str = 'a-b-c-d';
var arr = str.split('-',3) // 参数2表示数组中要保留前几个元素
console.log(arr) // ['a','b','c']
var str = 'a-b-c-d';
var arr = str.split() // 省略了分隔符,默认就不分割,将整个字符串当做一个元素放在数组中
console.log(arr) // ['a-b-c-d']
var str = 'a-b-c-d';
var arr = str.split('')
console.log(arr) // ["a","-","b","-","c","-","d"]
startsWith
作用:判断字符串是否以某个字符或小写字符串开头的
语法:字符串.startsWith(字符/小字符串 )
返回值:返回布尔值
var str = 'abcdef'
var bool = str.startsWith('aabc')
console.log(bool);//结果false
var bools = str.startsWith('abc')
console.log(bools);//结果true
endsWith
作用:判断字符串是否以某个字符或小写字符串结尾的
语法:字符串.endsWith(字符/小字符串 )
返回值:返回布尔值
var str = 'abcdef'
var bool = str.endsWith('kef')
console.log(bool);//结果false
var bools = str.endsWith('f')
console.log(bools);//结果true
includes
作用:判断字符串是否包含某个字符或小写字符串。
语法:字符串.includes(字符/小字符串 )
返回值:返回布尔值
var str = 'abcdef'
var bool = str.includes('bcde')
console.log(bool);//结果true
indexOf
作用:查找字符或小字符串在字符串中第一次出现的下标。
语法:字符串.indexOf(字符/小字符串 )
返回值:找到返回下标,找不到返回-1
var str = 'abcdbabefcd'
var idx = str.indexOf('a')
// 第二个参数表示从哪个下标开始查找
var idx = str.indexOf('a', 2)
console.log(idx);//结果是5
var dx = str.indexOf('k', 2)
console.log(dx);//结果是-1
lastIndexOf
作用:查找字符或小字符串在字符串中最后一次出现的下标。
语法:字符串.lastIndexOf(字符/小字符串 )
返回值:找到返回下标,找不到返回-1
var str = 'i love you';
// 找到o字符在str中最后一次出现的位置
var s = str.lastIndexOf('o');
console.log(s); // 8
var s = str.lastIndexOf('o',7) // 将下标7当做字符串末尾,查找字符o在字符串中
最后一次出现的下标
console.log(s) // 3
var s = str.lastIndexOf('a')
console.log(s) // -1 - 找不到就返回-1
slice
作用:截取字符串。
语法:字符串.slice(参数1,参数2 )参数1是截取开始的下标,参数2是截取的结束下标
返回值:包前不包后
var str = 'abcdefhfdh';
// 从下标1截取到下标4
var s = str.slice(1,4) // 参数1是开始截取的下标,参数2是截取的结束下标
console.log(s) // bcd - 结果中不包含结束下标对应的字符
var s = str.slice(1) // 省略第二个参数,默认能截取到字符串末尾
console.log(s) // bcdef
var s = str.slice(-3,-1) // 下标可以使用负数表示,-3表示倒数第3个字符,-1表示倒数第1个字符
console.log(s) // def
var s = str.slice(-1,-3) // 如果开始下标比结束下标大,会截取到空
console.log(s) // ''
substr
作用:截取字符串。
语法:字符串.substr(开始下标, 截取的长度)
返回值:返回一小段
var str = 'abcdef';
str = str.substr(1,3) // 参数1是开始截取的下标,参数2是截取的字符串长度
console.log(str) // bcd
str = str.substr(1) // 省略参数2默认截取到字符串末尾
console.log(str) // bcdef
str = str.substr(-4,2) // 开始截取的下标可以用负数表示
console.log(str) // 'cd'
str = str.substr(1,20) // 长度超出最大下标,就相当于省略了参数2
console.log(str) // cdef
substring
作用:截取字符串。
语法:字符串.substring(开始下标, 结束下标)
返回值:返回一小段,包前不包后.
var str = 'abcdef'
str = str.substring(1,4) // 参数1是开始截取的下标,参数2是结束下标
console.log(str) // bcd - 结果不包含结束下标对应的字符
str = str.substring(1) // 省略参数2,默认截取到末尾
console.log(str) // bcdef
str = str.substring(1,1) // 开始下标和结束下标相等就截取到空字符串
console.log(str) // ''
str = str.substring(4,1) // 开始下标大于结束下标,就先交换两个参数位置,然后再截取
console.log(str) // 'bcd'
str = str.substring(-5,4) // 开始下标或结束下标是负数,就先替换为0,然后开始截取
console.log(str) // abcd
replace
作用:替换字符串中指定的一小段。
语法:字符串.replace(被替换的一段,新的内容)
返回值:返回替换后的字符串。
var str = 'i love html very much and html is very good'
str = str.replace('html', 'js')//i love js very much and html is very good
str = str.replace('html', 'js')//i love js very much and js is very good
console.log(str);
trim
作用:去除字符串两端空白
语法:字符串.trim()
var str = ' aaa ';
str = str.trim()
console.log(str) // 'aaa' - 左右两端的空白被去掉了
str = str.trimLeft() // 去除左边的空白
console.log(str) // 'aaa '
str = str.trimRight() // 去除右边的空白
console.log(str) // ' aaa'
toUpperCase
作用:将字符串中字母转为大写
语法:字符串.toUpperCase()
var str = 'i love you';
str = str.toUpperCase()
console.log(str) // 'I LOVE YOU'
toLowerCase
作用:将字符串中字母转为小写
语法:字符串.toLowerCase()
var str = 'I LOVE YOU';
str = str.toLowerCase()
console.log(str) // 'i love you'
四、三个截取方法的区别
slice
特点:可以使用负数表示下标
var str = 'abcdefghijklmnopq'
var s = str.slice(-5, -2)//结果是mno
var s = str.slice(-2, -5) //结果是ab
// 因为截取一定是从左向右的,开始下标在结束下标的右边,就截取到字符串
console.log(s);
substr
特点:可以用负数表示开始下标
// 1.可以用负数表示开始下标
var str = 'abcdefghijklmnopq'
var s = str.substr(-5, 3)//结果是mno
console.log(s);
substring
特点:不能用负数表示下标
var s = str.substring(-5, -2)//结果是空
var s = str.substring(2, 5)//结果是cde
// 如果开始下标在结束下标的右边,就先交换两个参数的位置 - 然后截取
var s = str.substring(5, 2)//结果是cde
// 如果使用了负数表示下标,就将负数先转成0去截取
var s = str.substring(-2, 2)//结果是ab
var s = str.substring(2, -2)//结果是ab
console.log(s);