【#】ES5&&ES6(面试必问点!!)

ES5&&ES6

一、let

     1.块级作用域, let定义的变量只在代码块中有效
     2.let声明的变量不会提前(前置)(意味着必须先定义后使用)
    3.不能重复定义 ,在同一个作用域中不能声明同名的变量
    4.暂时性死区(当内部变量与外部变量同名时,内部变量会屏蔽外部变量)
    注:let和var的区别
         1)let声明的变量是块级作用域(所在一对花括号里),var是函数作用域和全局作用域
       注意:let是可以定义全局变量,局部变量,块级作用域的变量。(和写代码的位置有关)
        2)let声明的变量不会声明提升,var会声明提升
        3)从代码的写法上,let不能声明同名的变量,var可以。

二、const只读变量

用const来修饰的变量只是只读变量也叫常量,就意味着该变量里的数据只能被访问,而不能被修改,也就是意味着const“只读”(readonly)
const所修饰的变量必须赋初始值
const修饰的是直接指向(修饰)的内存
引用类型有两块内存区域
引用类型代表的是保存地址的内存区域,数组元素表示的是数据

三、this和bind

1.this
1).以函数的形式调用时,this永远都是window
2).在事件处理函数时,this是事件源.
2.bind(this重新指代的对象)(只能为匿名函数服务)
3.call和apply
call和apply本质上能改变函数所属的对象(函数内部的this)
参数是谁,this就是谁
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

四、JSON.parse/JSON.stringfy

JSON字符串和对象的直接的转换
字符串转换成JSON对象:JSON.parse
JSON对象转换成字符串:JSON. stringify
var str = ‘{“id”:“123”,“name”:“456”}’;
let obj = JSON.parse(str);
console.log(obj.id);
console.log(obj.name);
let str1 = JSON.stringfy(obj);
console.log(str1.id);
console.log(str1.name);

五、for in与for of

let strArr = [];
for(let index in strArr){
   console.log(strArr[index]);
}

for(let t of strArr){
console.log(t);

} 六、字符串的扩展

判断字符串是否包含在另一个字符串中
ES5 indexOf(参数)
ES6 includes(参数) 返回布尔值,表示是否找到参数的字符串
startsWith(参数) 返回布尔值,参数是否在源字符串的头部
endsWith(参数) 返回布尔值,参数是否在源字符串的尾部

七、箭头函数(针对于匿名函数)

       1. eg:   x=>x*5相当于function(x){ return x*5 }

箭头函数相当于匿名函数,省略了return和花括号
2.有名函数 let 函数名=参数=>函数体
eg:let num=(x=>x*5)(8) //传入参数x=6,自运行
console.log(num) //30

             let num=function(x){
                   return x*5
               }

      3.函数需要多个参数,参数需要花括号括起来
            (x,y)=>x>y?x:y;

      4.返回值是个对象
          var f=(id,name)=>({id:id,name:name});
             //等价于:
             返回的是对象
          var f=(id,name)=>({
                return {id:id,name:name}
           });
          红色括起来的圆括号不能省略,因为对象的花括号和函数的花括号冲突了

箭头函数的优点:
    对this转移的处理,箭头函数内部的this是词法作用域,由上下文确定

八、解构赋值(针对于数组、对象)批量给变量赋值

优点:1. 可以让一个函数返回一个的值
          2. 可以实现两个数的交换
          3.可以将多个变量进行初始化
eg:  let a=1;b=22;t;
     a=a+b;
     b=a-b;
     a= a-b;
     console.log(a,b);

eg: let [v1,[v2,v3],[v4,v5]] = [12,[23,34],[56,67],[5,6]];
console.log(v1);
console.log(v2);
console.log(v3);
console.log(v4);
console.log(v5);
let {name,age} = {name:“dahuang”,age:18};
console.log(name,age);

九、Set和Map

set特点:自动去重,无下标
let set = Set([2,3,5,6,2,3,2,1]);
console.log(set.size); //5
for(let t of set){
console.log(t);
}
set集合的方法:
add(参数) 向集合中添加一个元素
delete(参数) 删除集合中某个数
has(参数) 判断集合中是否含有某个值
clear(参数) 清空集合中的元素
from(参数) 将集合转为数组

Map : 键值对
set() 向集合中添加一个元素
get(键) 根据键去取值
delete( 键) 删除集合中的某个数
has(键) clear(参数) 清空集合中的元素
from(参数) 将集合转为数组
Map的遍历
for(let t of map){
console.log(t[0] + t[1]); //0代表key,1代表value
}

十、Symbol

1.表示独一无二的值,它是基本类型中的一种。
2.它是内置基本对象,不能使用new关键字来使用。let symbol = Symbol();
let symbol1 = symbol(“heihei”);
let symbol2 = symbol(“heihei”);
console.log(symbol1 === symbol2); //false

let age =Symbol();
var a = {
name:“老王”;
[age]: 18 ;
hobby: “写代码”;
};
for(let i in a){
console.log(a[t]); //老王
//写代码
}
console.log(a[age]); //18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值