作用域
作用域 分为 全局作用域 和 私有作用域(函数)
作用域的查找规则
- 现在自己的作用域中找,找到后直接拿来用
- 如果在自己的作用域中找不到,就向上一级查找,有就直接用
- 上一级没有这个作用域,就再往上找 直到全局作用域 有就拿来用
- 如果全局作用域中也没有 ,就报错 。。is not defined
作用域的赋值规则
- 先在自己的作用域中找,找到后直接赋值
- 如果自己的作用域中找不到 就向上一级查找 有直接赋值
- 如果上一级没有这个变量,就再向上查找 直到找到 全局作用域 有世界赋值
- 如果全局作用域中没有 就先声明 然后赋值
数据的操作
数组的删除
-
方法一:
arr.length--
-
方法二:
arr.pop()
返回值: 被删除的数据
会改变原数组
添加数组元素
arr.push("要添加的数据")
返回值: 改变后的数据长度
会改变原数组
删除第一项
arr.shift()
返回值:被删除的数据
会改变原数组
添加第一项
arr.unshift()
返回值:改变后的数组长度
会改变原数组
查找
arr.indexOf("要查找的数据")
返回值: 查找到 就返回对应的索引
没有查找到 就返回 -1
不改变原数组
反转数组
arr.reverse()
返回值:改变后的原数组
会改变原数组
以特定的符号把数组中的内容链接成一个字符串
arr.join("以什么符号链接")
如果没有传参数 默认是空字符串
返回值:链接好的字符串
不会改变原数组
截取数组中的数据
arr.splice(开始截取的索引,截取的个数,替换被截取的数据)
返回值:截取好的数据放到一个新的数组中返回
会改变原数组
排序
arr.sort((a,b) => {return a-b}) //从小到大
arr.sort((a,b) => {return b-a}) //从大到小
返回值:改变后的原数组
会改变原数组
ES5中数据的方法
遍历数据
arr.forEach(function(item,index,arr){})
没有返回值
不会改变原数组 某些特定情况下例外
映射
是数组的一个映射 把数组的每一项进行操作后 返回出去作为一个新的数据
arr.map(function(item,index,arr){})
返回值:一个新的数据
不改变原数组
过滤
过滤数组中符合条件的数据 作为一个新的数组返回
arr.filter(function(item,index,arr){})
返回的是一个新的数组
不改变原数组
只要数组中有一个条件满足 返回 true 不满足 就返回 false
arr.some(function(item,index,arr){})
返回值: 一个布尔值
不改变原数组
数组中的每一项都满足 返回 true
只要有一个不满足 就返回 false
arr.every(function(item,index,arr){})
返回值: 一个布尔值
不改变原数组
this 关键字的指向
- 在全局作用域中 指向 window
- 如果是 函数名() 的调用方法 指向 window
- 如果是 对象 . 函数名()的的调用方法 指向 对象
- 如果是事件处理函数 里面的 this 指向 事件源
字符串的方法
字符串的常用方法
查找
res.charAt(索引)
返回值:对应的位置的字符
不会改变原字符串
res.charCodeAt(索引)
返回值:对应位置字符串的编码
不会改变原字符串
str.indexOf("想要查找的字符")
返回值:对应字符的索引 没有找到就是 -1
不会改变原字符串
字符串转小写
str.toLowerCase()
返回值: 转换后的字符串
不会改变 原字符串
字符串转大写
str.toUpperCase()
返回值: 转换后的字符串
不会改变 原字符串
把字符串以某种符号分割为数组
str.split("某种符号")
把字符串以某种符号分割成数组
如果字符串中没有这个符号 则把字符串当成一个整体,放到一个数据中
如果没哟传参 则把整个字符串当成一个整体 放到一个数据中返回
返回值:以符号分割好的数据
不会变原数组
截取字符串
str.subString(截取开始的位置,截取结束的位置)
包前不包后
返回值:截取中的字符串
不会改变原字符串
str.substr(截取开始的位置,截取的个数)
返回值就是截取出来的字符串
不会改变原字符串
替换字符串
str.replace('替换前的字符串','替换后的字符串')
字符串和数组共有的方法
indexOf()
concat()
链接字符串或者数组
slice()
截取
slice(截取开始的位置,截取结束的位置) //包前包后
如果第二个参数是一个附属 代表从第一个参数的位置开始 截取的 length + (- 截取结束的位置)