ES6简简单单

2017-12-25  本文已影响0人  aaaaaAndy980

箭头函数

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;
}
上一篇下一篇

猜你喜欢

热点阅读