美文网首页
ES6简简单单

ES6简简单单

作者: aaaaaAndy980 | 来源:发表于2017-12-25 16:33 被阅读0次

    箭头函数

    ES6允许“箭头”来定义函数。

    var f = v => v
    

    上面语句等同于:

    var f = function (v){
        return v;
    }
    

    特殊情况:

    var f = () => v;     //没有参数
    var f = (num1, num2) => v;   //两个参数
    var f = (num1, num2) => { return num1*num2; }   //代码块多条�语句时
    

    因为打括号被解释为代码块,�所以如果箭头函数返回一个对象�,必须在对象外面加上一个打括号,否则会出错。

    需要注意this对象的指向:

    模版字符串

    之前的语法如果想在页面中输出字符串模版,利用“”进行大量的拼接,十分不方便。在ES6中提供了模版字符串,用`(反引号)标识,用${}将变量括起来,如下:

    $('#result').append(
        `He is <b>${name}</b> and he widh to know his ${age}, that is all.`
    )
    

    const

    const修饰�常量,并不是保证��变量的值不变,而是保证指向变量的内存地址不变。对于简单的数据类型,内存地址等同于变量本身,所以可以说是保证变量值不变,但是对于复合类型数据,变量指向的是内存地址,const只能保证这个指针不变,至于它指向的数据结构是否变化就不能控制了。因此,一个对象声明为常量必须十分小心。

    const foo = {}   //声明一个常量
    foo.name = 'andy';  //�给常量添加一个属性,可以成功
    foo = {}   //�将常量重新指向一个内存地址会报错,不可成功
    

    let用法

    ES6新增了let方法来声明变量,它鱼var的作用大致相同,只是let声明的变量只在let所在的代码块区域有效。

    {
        let a = 1;
        var b = 2;
    }
    a    //�a is not defined
    b    //2
    

    另外for循环还有一个特别之处,就是�设置循环变量的那一部分是一个父作用域,而循环体内部是一个子作用域。

    for ( let i = 0; i < 3; i++){
        let i = 'abc';
        console.log(i);    
    }
    // abc
    // abc
    // abc
    

    上面代码正确运行了三次,输出了三次abc,证明函数内部变量i和循环变量i不在同一个作用域,�他们有各自单独的作用域。

    do表达式

    本质上,块儿级作用域是一个语句,将多句操作封装在一起。

    {
        let t = f();
        t = t * t;
    }
    

    上述代码中,�块儿级作用域奖两条语句封装在一起,�但是在块儿级作用域之外,没办法得到t的值,这是因为块儿级作用域不返回值,除非t是全局变量。

    现在有一个提案,将块儿级作用域变成一个表达式,就可以得到返回值:

    let x = do{
        let t = f();
        t * t;
    }
    

    相关文章

      网友评论

          本文标题:ES6简简单单

          本文链接:https://www.haomeiwen.com/subject/idglgxtx.html