ES6(1)

  经过了几个月对前端的学习,觉得成效不大,那就给学习做点记录吧,从ES6开始。

  学习一门技术网络上的文档很多,推荐一本学习文档用于学习参考,给出链接https://es6.ruanyifeng.com/

  • 变量的声明方式

  相较于传统js中的var,es6中新加了一种新的变量声明方式let,相较于var它有四种显著的特性

  1. let:
    ①不存在变量提升
    ②不允许重复声明
    ③暂时性死区
    ④块级作用域                                                                                                                                                                                                                                                                                                                                                                                                           之前我们学过的var声明的变量都是全局的,如果直接写变量名不定义也会按照var定义来解析算作全局变量,而let是局部作用域,这里的作用域可以理解为{}中的内容为一个作用域,在作用于外调用,变量不存在会报错,这就是因为块作用域的原因.                       这个个例子举得很好,需要细细体会一下,另外js有自己的存储机制,所以在let定义失效后,for循环中后台自动会把记录的i保存,这样就说得通了为什么i在块作用域外还可以使用
    1 var a = [];
    2         for (var i = 0; i < 10; i++) {
    3             a[i] = function () {
    4                 console.log(i);
    5             };
    6         }
    7         a[6]();//10
    1 var a = [];
    2         for (let i = 0; i < 10; i++) {
    3             a[i] = function () {
    4                 console.log(i);
    5             };
    6         }
    7         a[6]();//6
  2. const:声明一个只读变量,一但声明变量不能改变,const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。
  • 变量的解构赋值
    从数组和对象中提取值,对变量进行赋值,这被称为解构
    ①数组解构
    
let arr = ["hello","world","good"];
    let a = arr[0];//hello
    let b = arr[1];//word
    let c = arr[2];//good
    let [a,b]=["hello","world","good"];//hello word underfine
    let [a,[b,c],d] = [1,[2,3],4];//1 2 3 4
    
    ②对象解构
let obj = {
      name:"abc",
      age:20
    }
    let name = obj.name;//abc
    let age = obj.age;//20

    let {age:b,name:a}={name:"abc",age:20};//20 abc 与位置无关变量名相对应
    ③字符串解构
let str = "hello";
    let [a,b,c] = "hello";
    console.log(a,b,c);//h e l
    console.log(str[0]);//h
    console.log(str.charAt(0));//h
    ④应用:函数参数的解构赋值\函数返回值\变量互换\Json应用
function foo({name,age}){
      console.log(name,age);
    }
    let obj = {
      name:"abc",
      age:20
    }
    foo(obj)//abc 20

    不引入第三个变量实现数值的互换

   //方案一
    var [a,b]=[b,a];
    //方案二
    var a = [b,b=a][0];
 

猜你喜欢

转载自www.cnblogs.com/yzkddhxb/p/12408703.html