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 = arguments.sort(); 是个什么样的结果呢,试试看吧。

你可能感兴趣的:(ECMAScript6)