一,ES5
(一),介绍
ES:ECMAScript简称ES - ECMA公司指定的规范
ES5:ECMA语法规范第5个版本
ECMAScript一开始被制定出来的时候,有很多当时考虑不到的情况,所以最开始的语法规范还有一些漏洞,不严谨的地方
ECMAScript随着时代的发展,前端工程师的进步,会一直进行升级迭代,让语言变得更严谨,更健全
我们所使用的js语法,大部分都是es3的语法,从es3开始,js的语法已经趋于稳定了
es5到目前为止,是公认的兼容性最好的一般js版本
(二),严格模式
就是js的一种语法,一旦使用这种语法,我们就在当前代码环境中,开启了严格的模式
一般默认是没有开启的
好处
1.让代码更加规范,严谨了
2.提高代码的执行效率,消除一些不必要的语法影响
开启了严格模式以后,代码会发生哪些变化
- 不允许省略var定义变量
- 不允许函数的形参同名
- 不允许普通函数中的
this
关键字代表window窗口
// 不允许普通函数中的this关键字代表window窗口
'use strict'
// 在严格模式下,普通函数中的this代表 undefined
function fn(){
console.log(this)
}
fn()
严格模式如何开启
- 在所有代码的最前面添加字符串:‘use strict’ - 让当前全局环境都开启了严格模式
- 在函数作用域内的最前面添加字符串:‘use strict’ - 让当前局部作用域内开启严格模式
// 全局开启的严格模式可以约束全局代码,也可以约束局部代码
'use strict'
function fn(){
// 局部开启严格模式,不能约束全局代码
'use strict'
var a = 20
}
fn()
a = 10 // a is not defined
console.log(a)
this 在 js 中是一个关键字 - 代表一个值
在js中算是一个难点,this会在不同的作用域中或不同的场景中,代表的含义是不一样的
this的5个使用场景
1.全局的this代表window
console.log(this)
2.普通函数中的this代表window
function fn(){
console.log(this)
}
fn()
3.自调用函数中的this代表window
(function(){
console.log(this)
})()
4.事件函数中的this代表事件源
btn.onclick = function(){
console.log(this)
}
5.对象方法中的this代表当前对象
var obj = {
name:'张三',
age:‘12’,
eat:function(){
console.log(this);
}
}
6.定时器中的this代表window
[es6]
7.箭头函数中的this代表谁取决于当前作用域中的this,可以了解箭头函数this上一行的作用域
[es6]
var fn =()=》{
console.log(this)
}
fn()
·
(三),数组新增的方法
1.数组.indexOf(元素)
在数组中查找某个元素第一次出现的下标
添加指定的元素
返回值:如果在数值中找到元素了,就返回这个元素对应的下标
如果没找到,就返回 -1
var arr = [1,2,3,4,5,5,6,7,8,9]
// 查找5在数值中位置
var index = arr.indexOf(50) // -1
console.log(index)
// 下标:0123456 .. 找不到就返回-1
// 利用indexOf判断某个元素是否在数值中
if( index < 0 ){
console.log('不在数值中')
} else {
console.log('在')
}
2.数组.forEach(function函数)
用于遍历数组的
语法 :数组.forEach ( function( value , index , array){
})
// value 是 每次遍历出来的元素
// index 是 每个元素对应的下标
// array 是 当前正在遍历的数组
var arr = ['李小璐', '白百何', '马伊琍',</