EcmaScript6学习之入门

1、const and for..of loops

一个常量不可以被重新赋值,并且不能被重复声明

浏览器支持情况:IE11,FF31+,chrome35+,opera2+,safari6+,node0.10+,

const a = ‘const_a’;
console.log(‘This is a const : ’ + a);

//browser supply : FF31+ ,chrome37+,safari7.1+
var arr = [‘apple’,’orange’,’banana’];
for (var i of arr) {
console.log(i);
}
2、 default function parameters,ONLY supplied by FF now。

在javascript1.x中,函数参数的默认值为undefined,但是有些场景下我们需要设置一个默认值,那么这个新特性就会帮到你.

先看下以前的实现方式:

function multiply(a, b) {
b = typeof b !== ‘undefined’ ? b : 1;
return a*b;
}
new feture下的写法:

function multiply(a, b = 1) {
return a*b;
}
multiply(5);
如果传入新参数,就使用传入的参数运算

multiply(5,3);//return 15
参数是数组也提供了支持,但是需要注意局部变量还是全局变量。

function append(value, array = []) {
array.push(value);
return array;
}
append(1); //[1]
append(2); //[2], not [1, 2]
那么如果是在参数中调用另一个方法呢,如下:

function test(){
alert(‘test’);
}

function test2(a=test()){
alert(‘text2’);
}

如果执行test2(),看到的结果是先弹出’test’,再弹出’test2’,也就是说参数中的调用总是先于

方法体的执行的,我们现在再把上面的例子改造下:

function test2(a=test()){
function test(){
alert(‘test’);
}
}
这时候如果再执行test2(),则会报TypeError: test is not a function

3、rest parameter,only supplied by FF now.

function test(a, b, …theArgs) {
console.log(theArgs + ‘,length=’ + theArgs.length);
}
注意参数中…前缀是必须,表示将剩余的参数全部塞进这个数组类型的参数中。

如下调用:

test(1)
test(1,3)
test(1,3,3)
test(1,3,3,5)
结果如下:
,length=0
3,length=1
3,5,length=2

我们不禁想到arguments对象,这两者之间有哪些不同呢?
(1)rest parameter只是包含那些没有被赋予一个独立的参数的参数,而arguments对象包含传递给函数的所有参数
(2)arguments对象不是真正的Array对象,而rest parameter则是Array的实例,这就意味着sort,map,forEach,pop 都可以直接的使用。
(3)arguments对象具有特定于自身的附加功能(如callee属性)
下面再看几个例子:
1) function multiply(multiplier, …theArgs) {
return theArgs.map(function (element) {
return multiplier * element;
});
}
var arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
这个例子实现了第一个参数分别和后面的参数相乘,
(2)function sortRestArgs(…theArgs) {
var sortedArgs = theArgs.sort();
return sortedArgs;
}
console.log(sortRestArgs(5,3,7,1));
该function实现参数的排序。如果将var sortedArgs = theArgs.sort();修改为var sortedArgs = argument

发布了60 篇原创文章 · 获赞 22 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章