es5和es6的语法

“use strict”

一般模式

在严格模式中,形参不允许同名

function (val,val){

在严格模式中,变量要先声明在赋值

var b=2;

console.log(val);

普通函数this指向的是window,但是如果是严格模式this是undefined

}

fn(12)

this

在事件函数中,this指向事件原

1.严格模式

“use strict” 写在程序开始,限制所有程序;写在函数体的开始–限制的是函数内部的代码程序

严格模式常见的要求:

在严格模式中,变量要先声明在赋值

定义变量必须要有var 

严格模式下,八进制被禁用

严格模式下,函数必需声明在程序的最顶端

argument不同

eval()解析后有自的作用域

严格模式下全局函数的this返回的是undefined;

2.let关键字 let 块级作用域

let 声明变量

let 不允许重复声明变量

let 必须在某个{}内部使用

let 在作用域范围内 声明的变量没有变量提升; 暂时性死区:通过let声明的变量 变量声明之前该变量不可用,这种现象就称作暂时性死区

let 块级作用域案例:点击某个li,获取li在页面的下标

3.this指向的改变

this含义–当前对象:指事件的调用都 或 方法的调用者

改变匿名函数的this指向:bind(this指向的对象)

案例:

var oDiv = document.getElementById("oDiv");

setTimeout(function(){

   this.style.display = "none";

}.bind(oDiv),3000);

document.onclick = function(){

this.style.display = “none”;

}.bind(oDiv);

改变非匿名函数的this的指向:apply() 或 call()

apply() 或 call():函数名.apply( 函数体内部this指向的对象 )

案例:

    var oDiv = document.getElementById("oDiv");

function fn(){

    alert(this);

}

fn.apply( oDiv );

fn.call( oDiv );

4.for…of

for … of 遍历数组:遍历结果为值 但不能遍历JS1ON对象,会报错

        es5新增的方法

for … in 遍历数组:遍历结果为下标 主要用于遍历对象

5.const关键字

定义常量的关键字

常量:不会变化的量;(以固定值的形式存在)

常量定义后不能在使用的过程中发生改变,如果改变,程序报错

const PI = 3.14159;

PI = 3.14;//报错

常量名一般用大写表示,与变量区别开来

7.字符串模板

解析字符串中的变量,使用${ 变量名 }

字符串模板:;主要是为了减少字符串拼接时容易出现的拼接错误

字符串模板中 既可以识别变量,也可以识别函数

8.箭头函数

一般是匿名函数使用箭头函数

var fn =  () => {

    alert("箭头函数");

}

箭头函数传参:

var fn = ( 参数 ) => {}

箭头函数返回值

var fn = ( 参数 ) => { return ... }

注:使用匿名函数不能使用bind()、call(),apply()改变this指向

9.解构赋值

var [a,b,c] = [1,2,3]

console.log(a,b,c);

var { uname,age } = { uname : “Tom” , age : 23 };

console.log( uname,age );

好处:

1.可以一次性定义多个变量

2.可以让一个函数返回多个值

3.可以作用在函数的传参上,以对象的方式传递,可以无视参数的顺序,形参与对象的键命名要一致。

4.可以轻松实现两个数的交换

案例:

使用解构赋值实现两个数的交换

使用解构赋值实现冒泡排序

10.Array.from()

一个参数:

Array.from( obj ):将一个含有length属性的对象、集合、类数组、伪数组 转成真正的数组

两个参数:第二个参数可以省略,如果传递第二个参数,第二个参数是一个类似map的函数

案例:Array.from()实现隔行变色

面试题 : 定义一个函数,功能实现 生成m个n的数组    要求: 不利用循环

    function fn(m,n){

        var newArr = Array.from( { length:m },() => {

            return n;

        });

        return newArr;

    }

 fn(6,3);

11.set集合和map集合

set集合:var set = new Set();定义一个set集合

new Set( 23,43,23 );不能这样传

    new Set( [23,43,23] );要用[ ]的方式传参

    或者:

             var set = new Set()

            set.add( 23 ).set.add( 43 ).set.add( 23 )...

set集合的特点:

1.自动去重

2.不会进行自动类型转换

案例:

    利用set实现数组去重,最张要得到一个数组

        var arr = Aarry.from( new Set( [23,12,23,32,43,53,32,12,32] ) );

        alert( arr );

    史上最短的数组去重方法

var arr = […new Set( [23,12,23,32,43,53,32,12,32] )];

set集合的属性:

size:集合值的个数

set集合的方法:

add();向集合中添加一个值,一次只参添加一个

delete();删除集合中的某个值

has();判断集合中是否有某个值

clear();清空集合

set集合的遍历:

set.forEach( ( item ) => { console.log( item ) } );

map集合 --存储的数据以键值对的形式存储

map集合的方法:

set(键,值);向集合中添加一个键值对

delete(键);根据键删除集合中的某个值

has(键);根据键判断集合中是否有某个值

get(键);根据键获取集合中对应键的值

clear();清空集合

map集合的遍历:

for( var val of map ){

   alert( val[0] );

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值