资讯专栏INFORMATION COLUMN

ES6踩坑记录

remcarpediem / 854人阅读

摘要:箭头函数省略省略原来的变成和过程大概为检测命名是否内存中存在报错命名命名过程中,如果函数出错,命名依旧占过去,不能再重新给函数定义这个命名。闭包参数有个特色,对外为变量,为内为常量。报错,已经被声明。我理解的继承的意义就是提高代码复用率。

这篇文章主要因为只是个人对ES6的不完整的理解,写的不是很生动,如果有比较了解的欢迎纠错。

1.箭头函数
省略 function 省略return;
原来的

        function (){
            retrun...
        }
        变成
        () = >

2.const 和 let

const过程大概为检测 命名是否内存中存在? 报错 :命名 ;
命名过程中,如果函数出错,命名依旧占过去,不能再重新给函数定义这个命名。

 var x;
 const x = () => {...}//报错,命名已经存在
 const y = () => {console.log(1)//报错,miss },定义函数失败
 const y = () => {console.log(1)}//报错,命名已存在

let作用于块级作用域,从我肤浅的理解角度,就类似个闭包的参数。所以没法再同一作用域用let定义同一个参数。闭包参数有个特色,对外为变量,为内为常量。

   
   let x = 1;
   let x = 2;//报错,x已经被声明。
   function test(){let x = 3};//不报错
   
   for(var i = 0;i < 5;i++){ 
        setTimeout(() => {console.log(i)},1000)
   }// 5 5 5 5 5
   
   for(let i = 0;i < 5;i++){ 
        setTimeout(() => {console.log(i)},1000)
   }// 0 1 2 3 4 
   
   这实际等于
    var n = (t) =>{setTimeout(() => {console.log(t)},1000)}
    for(var i = 0;i < 5;i++){
    n(i);
    }

3.promises
异步处理功能
定义一个函数为new Promise(),Promises里面有俩个参数对象,resolve //成功,reject //失败,这俩个参数写在函数的最后面,表示这个函数是不是执行成功了。
resolve和reject可以带入自己的参数。
.then()可以无限链下去。我个人觉得这个可以封装一个方法。

var con1 = new Promise(function(resolve,reject){
   setTimeout(() => {console.log(1);true?resolve("成功"):reject("失败")},1000)
})

var con2 = (t) => {setTimeout(() => {console.log(t)},1000)};

con1.then((resolve的参数) => {con2(resolve的参数)},(reject的参数) => {con2(reject的参数)})

4.class
class应该是涉及到了原型链,原型链就是一个函数的原型函数,区别于构造函数。主要用于继承。
我理解的继承的意义就是提高代码复用率。

  class test1{
   testOne(){console.log("this is test1.testOne")}
   }
   
   class test2 extends test1{
   testTwo(){console.log("this is test2.testTwo")}
   }
   
   var test3 = new test2();
   test3.testOne();//this is test1.testOne
   test3.testTwo();//this is test1.testTwo
   

5.数组合并rest
rest的写法就是...

     var testRest = (...x) => {console.log(x)};
     tesrRest(1,2,3)//[1,2,3]   
     const a = [1,2,3];
     const b = [4,5,6];
     const c = [...a,...b];//[1,2,3,4,5,6]

6.遍历forEach

        c.forEach(function(data){
        console.log(data)
        })//1 2 3 4 5 6 

7.默认值

        var z = undefined;
        var x1 = z||"默认值z";//默认值z
        var y = "y";
        var x2 = y||"默认值y";//y
        var q = false;
        var x3 = q||"默认值q";//默认值q
        var w = null;
        var x4 = w||"默认值w";//默认值w
        var e = "";
        var x5 = e||"默认值e";//默认值e

我觉得这里面最没怎么踩懂的就是class 因为原型链还是没有能完全弄懂 踩得最忐忑的就是 promise 因为这里面的格式太局限了,而且网上找的解释很多不解释reslove和reject的判断条件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85074.html

相关文章

  • 关于Node.js的__dirname,__filename,process.cwd(),./文件路

    摘要:先把当成文件,依次查找当前目录下的,找到了,就返回该文件,不再继续执行。那么关于正确的结论是在中使用是跟的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟效果相同,是相对于启动脚本所在目录的路径。 起因 原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博...

    harryhappy 评论0 收藏0
  • 关于Node.js的__dirname,__filename,process.cwd(),./文件路

    摘要:先把当成文件,依次查找当前目录下的,找到了,就返回该文件,不再继续执行。那么关于正确的结论是在中使用是跟的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟效果相同,是相对于启动脚本所在目录的路径。 起因 原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博...

    pumpkin9 评论0 收藏0
  • 关于Node.js的__dirname,__filename,process.cwd(),./文件路

    摘要:先把当成文件,依次查找当前目录下的,找到了,就返回该文件,不再继续执行。那么关于正确的结论是在中使用是跟的效果相同,不会因为启动脚本的目录不一样而改变,在其他情况下跟效果相同,是相对于启动脚本所在目录的路径。 起因 原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博...

    hzx 评论0 收藏0
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架

    摘要:要想用好必须对基础,体系,打包工具有较深的了解对,有了解。官方提供的脚手架不能指定入口文件,如果我们想要在项目中使用,没有入口文件将会变得比较复杂。那么,我们应该如何使得当前项目具有入口文件呢答案是只能修改文件。 写在前面的话: 注意!该文档是2017年年底的文章,那个时候weex还有很多问题,现在weex已经全面更新,文档也比较全。下面的讲解可能不太适应新的weex框架,后面我会再立...

    jk_v1 评论0 收藏0
  • 5分钟上手TypeScript踩坑

    摘要:前言最近在学习,发现的官方文档中的分钟上手辅导教程中会有许多新手可能很难理解的地方,所以记录一下声明一下我用的版本是以后版本可能有所不同什么是维基百科上说是一种由微软开发的自由和开源的编程语言。 前言 最近在学习TypeScript,发现TypeScript的官方文档中的5分钟上手TypeScript辅导教程中会有许多新手可能很难理解的地方,所以记录一下 声明一下我用的版本是 npm ...

    array_huang 评论0 收藏0

发表评论

0条评论

remcarpediem

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<