ES6学习笔记

一.Let,const

Let 具备块级作用域
(1)没有预解析,不存在变量提升

  Let a=12;
    function show(){
        console.log(a); //Tdz 开始暂时性死区,
        let a=5;  //TDZ结束
    }

(2)同一作用域不能重复定义相同变量

  For循环,For循环里面是父级作用域    
         for(let i=0;i<3;i++){
            let i=’abc’;
            console.log(i) //打印出3次‘abc’(i在不同得作用域)
        }
        

const 定义常量 特性和let一样
(1)const定义的定义必须有值,不能后赋值,不能修改
如果真的想将对象冻结,应该使用Object.freeze方法。

const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;

二.解构赋值

Let [a,b,c]=[2,3,4]
注意:左右俩边,结构格式要保持一致


 Json:
        var obj={
            a:2,
            b:3
        };
        let {a,b}=obj;
        let {a:nsds,b}=obj;//将a起名字为nsds
        let [a,b,c='暂无数据']=['aa','bb'];
        //可以设置默认值
 

交换俩个数的位置

let a=9;
let b=8;
[a,b]=[b,a];

案例

function show({a="1",b='2'}){
     console.log(a,b) //给默认值
 }
 show({});

注意:ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。

 let [x = 1] = [undefined];
    x // 1
    let [x = 1] = [null];
    x // null
   

三.字符串模板

(1)优点:随意换行

格式:${name}

let name='abc';
let age=18;
let str=`这个人名字:${name},年龄:${age}`;
console.log(str)

(2)字符串查找

str.indexOf(要找的东西); //返回索引(位置),没有找到返回-1
str.includes(要找的东西); //返回值 true/false
判断浏览器:navigator.userAgent.includes('chrome')
检测字符串以谁开头:str.startsWith(检测东西)
检测字符串以谁结尾:str.endsWith(检测东西)
重复字符串:str.repeat(3)  重复3次
字符串填充:str.padStart(整个字符串长度,填充东西) //往前填充
str.padEnd(str.length+str1.Length,填充东西) //往后填充

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理