240 发简信
IP属地:广东
  • nice,终于在这里找到答案。补充一下,如果是想要在calc中使用scss函数调用的结果,也是这样把函数调用写在#{ } 里面

    sass中使用calc计算表达式变量问题

    calc()是css的一个函数,可用于元素计算长度,比如div宽度想要减去一个固定宽度后并自适应,可以写为calc(100% - 60px) 注意“-”两边有空格 sass已...

  • 如何正确证明 Commonjs 模块导出是值的拷贝,而 ES module 是值的引用?

    关于 Commonjs 和 ES module 模块导出的区别,一般流行一种说法:CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用,而我发现,绝大部分...

  • function f1(x=1,y=()=>{x=10;}){
    var x;
    y();
    console.log(x);
    }
    f1(); //1

    还有一个问题是这里的输出结果。既然已经在函数体内作用域找到了未赋值的x,为什么最后不是输出undefined而是输出1呢?输出1就好像其实打印的是参数x而不是函数体内的x一样,或者说打印的确实是函数体内的x,只是已经被赋值1了?但是也觉得不太对劲。

    es6函数默认参数作用域小记

    使用默认参数时,参数会形成一个独立的作用域,此作用域与函数体中的作用域是平行关系 经过测试发现,此段代码如果使用babel编译成es5~输出结果为 2 2 0 这个结果和开头...

  • 为了回复特意注册了简书。我赞同你的看法,这里参数作用域和函数体作用域实际上就是父子嵌套的关系,查找变量的时候就是沿着作用域链追溯。所以其实最后就剩一个比较奇怪的问题,就是你说的let报错的问题,这个问题的确会让这两个作用域看起来是共享的而不是嵌套的。http://dmitrysoshnikov.com/ecmascript/es6-notes-default-values-of-parameters/ 上面你发的文章的原作者有在评论里讲到这个问题,但是我的英文水平略吃力,没有get到作者的点,这里粘贴一下:
    thanks, and great question. This just per spec, the let bindings inside the main function body are checked against the the parameter names (forbidding the duplicates). Though to confirm that a separate scope is created, you can replace the x in the body to var, and the f closure should still print 2, not 5.
    真心希望有看到回复的话可以一起探讨这个问题。

    es6函数默认参数作用域小记

    使用默认参数时,参数会形成一个独立的作用域,此作用域与函数体中的作用域是平行关系 经过测试发现,此段代码如果使用babel编译成es5~输出结果为 2 2 0 这个结果和开头...

  • 1.我觉得用上下层关系来解释形参列表的独立作用域和函数体的作用域更好,因为
    var x = 0;
    function foo(x, y = function(){ console.log(x); x = 2; console.log(x); }) {
    x = 3;
    y();
    console.log(x);
    }
    可以理解成函数体没有变量x,向上一层作用域(形参列表的独立作用域)查找变量x,找到参数x;


    2.此外,有个用上下层的思路解释不通的例子:
    var x = 0;
    function foo(x, y = function(){ console.log(x); x = 2; console.log(x); }) {
    let x = 3; //报错:Identifier 'x' has already been declared
    y();
    console.log(x);
    }
    这说明函数体的作用域已经有变量x了,至于这个x和foo函数的参数x有什么关系,我也想不通。
    3.有一个文章也讲了这些东西:http://bosn.me/articles/es6-default-param/
    他对上面let报错只概括了一下:“另外,需要注意到只有变量(var)和函数允许重复声明,而用let/const重复声明参数是不允许的”