一、严格模式(了解)
我们都知道 js 是一个相对不很严谨的语言,而且开发的时候,一些代码也不是很严格要求,而严格模式就是对开发的时候写的一些内容做了要求
开启严格模式
想开启严格模式,直接在代码最开始的位置写上字符串 use strict
<script>
'use strtic'
// 下面代码书写就要按照严格模式来书写
</script>
严格模式的规则
声明变量必须有 var 关键字
'use strtic'
varnum=100
num2=200// 这个就会报错
之前了解过,在声明变量的时候,如果没有 var 关键字,那么按照作用域的规则会自动定义成全局变量
严格模式下不可以,会报错
函数的行参不可以重复
'use strtic'
functionfn(p1,p1) {}// 直接就会报错
在非严格模式下,函数两个行参一样,是不会报错的,只不过就是相当于在函数内部只有一个变量了
但是在严格模式下会报错
声明式函数调用的时候函数内部没有 this
'use strtic'
functionfn() {
console.log(this)// undefined
}
fn()
本身,全局声明式函数在调用的时候,函数内部的 this 是指向 window 的
在严格模式下,是没有 this 的
二、ES5 中常见的数组常用方法
之前我们讲过的数组常用方法都是 ES3 的方法
今天来说一些 ES5 中的方法
二-1、indexOf
indexOf 用来找到数组中某一项的索引
语法: indexOf(你要找的数组中的项)
vararr=[1,2,3,4,5]
// 使用 indexOf 超找数组中的某一项
varindex=arr.indexOf(3)
console.log(index)// 2
我们要找的是数组中值为 3 的那一项
返回的就是值为 3 的那一项在该数组中的索引
如果你要找的内容在数组中没有,那么就会返回 -1
vararr=[1,2,3,4,5]
// 使用 indexOf 超找数组中的某一项
varindex=arr.indexOf(10)
console.log(index)// -1
你要找的值在数组中不存在,那么就会返回 -1
二-2、forEach
和 for 循环一个作用,就是用来遍历数组的
语法:arr.forEach(function (item, index, arr) {})
vararr=[1,2,3]
// 使用 forEach 遍历数组
arr.forEach(function(item,index,arr) {
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
console.log('数组的第 '+index+' 项的值是 '+item+',原始数组是',arr)
})
forEach() 的时候传递的那个函数,会根据数组的长度执行
数组的长度是多少,这个函数就会执行多少回
map
和 forEach 类似,只不过可以对数组中的每一项进行操作,返回一个新的数组
vararr=[1,2,3]
三、使用 map 遍历数组
varnewArr=arr.map(function(item,index,arr) {
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
returnitem+10
})
console.log(newArr)// [11, 12, 13]
filter
和 map 的使用方式类似,按照我们的条件来筛选数组
把原始数组中满足条件的筛选出来,组成一个新的数组返回
vararr=[1,2,3]
四、使用 filter 过滤数组
varnewArr=arr.filter(function(item,index,arr) {
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
returnitem>1
})
console.log(newArr)// [2, 3]
我们设置的条件就是 > 1
返回的新数组就会是原始数组中所有 > 1 的项
五、创建字符串(了解)
我们创建字符串也分为两种方法 字面量 和 构造函数
字面量:
varstr='hello'
构造函数创建
varstr=newString('hello')
五-1字符串的常用方法
我们操作字符串,也有一堆的方法来帮助我们操作
字符串和数组有一个一样的地方,也是按照索引来排列的
charAt
charAt(索引) 是找到字符串中指定索引位置的内容返回
varstr='Jack'
// 使用 charAt 找到字符串中的某一个内容
varindex=str.charAt(2)
console.log(index)// c
因为字符串也是按照索引进行排列的,也是同样从 0 开始
所以索引 2 的位置就是 c
如果没有对应的索引,那么就会返回 空字符串
varstr='Jack'
// 使用 charAt 找到字符串中的某一个内容
varindex=str.charAt(10)
console.log(index)// ''
这个字符串根本没有索引 10 的位置
所以就会返回一个空字符串 ''
charCodeAt
charCodeAt(索引) 就是返回对应索引位置的 unicode 编码
varstr='Jack'
// 使用 charAt 找到字符串中的某一个内容
varindex=str.charCodeAt(0)
console.log(index)// 74
因为 J 在 unicode 对照表里面存储的是 74,所以就会返回 74
indexOf
indexOf 就是按照字符找到对应的索引
varstr='Jack'
// 使用 indexOf 找到对应的索引
varindex=str.indexOf('J')
console.log(index)// 0
因为字符 J 在字符串 Jack 中的索引位置是 0
所以会返回 0
substring
substring 是用来截取字符串使用的
语法: substring(从哪个索引开始,到哪个索引截止),包含开始索引,不包含结束索引
varstr='hello'
// 01234
// 使用 substring 截取字符串
varnewStr=str.substring(1,3)
console.log(newStr)// el
从索引 1 开始,到索引 3 截止,包含前面的索引不包含后面的索引
所以返回的是 el
//substr
substr 也是用来截取字符串的
语法:substr(从哪个索引开始,截取多少个)
varstr='hello'
// 01234
// 使用 substr 截取字符串
varnewStr=str.substr(1,3)
console.log(newStr)// ell
这个方法和 substring 不一样的是,第二个参数是截取多少个
从索引 1 开始,截取 3 个,所以得到的是 ell
toLowerCase 和 toUpperCase
这两个方法分别使用用来给字符串转成 小写字母 和 大写字母 的
varstr=hello
// 使用 toUpperCase 转换成大写
varupper=str.toUpperCase()
console.log(upper)// HELLO
// 使用 toLowerCase 转换成小写
varlower=upper.toLowerCase()
console.log(lower)// hello