1、字符串新特性--雙丿(撇)號聲明字符串 、多行字符串 var myName = `fang my hao li jsk c sdf` //這樣不會報錯。 、字符串模板 console.log(`qsdaf ${myName}`) console.log(`qsdaf ${myName()}`)//函數和變量能夠直接寫這裏面${} console.log(`<div> <span>${myName}</span> </div>`)//這樣就能夠很快的寫出來,而不用加號鏈接; 、自動拆分符串 function test(a,b,c) { console.log(a); console.log(b); console.log(c); } var myname = 'ni hao'; var getAge = function(){ return 18 }//下面的調用,a爲一個數組['hello my name is',',im','']; b爲'ni hao';c爲18;也就是說這樣會以變量爲分隔 test`hello my name is ${myname},im ${getAge()}`;2、 參數新特性 一、 參數類型--在參數名稱後面使用冒號來指定參數的類型 、any 能夠任何類型 var myname: any = 18; 、string 字符串類型 var myname: string = "zhang san" 、number 數字類型 var my: number = 20 、boolean 布爾類型 var name: boolean =true function test (name:string):string { return "" }//意思爲參數只能爲字符串,函數返回值也只能是字符串; 、自定義類型 class person { name:string; age: number; } var zhangsan :Person = new Person() zhangsan.name = "zhailiang"; zhangsan.age = 18 二、 參數默認值--在參數聲明後面用等號來指定參數的默認值 var my: string = "fang"; function test(a:string,b:string,c:string="wo"){ console.log(a) console.log(b) console.log(c) } test{'sfa','sss','asd'}//沒有給默認值時必須給3個參數否則會報錯;有默認值的參數能夠不寫(但必須寫在最後面) 三、可選參數--在方法的參數聲明後面用問號標明此參數爲可選參數 function test(a:string,b?:string,c:string="wo"){ console.log(a); console.log(b);//爲b.length時會報錯 console.log(c); } test{'sfa'} //這樣不會報錯,b爲undefined;還有一個注意的也像默認參數同樣,可選參數一定要寫在必寫參數的後面3、函數新特性 一、Rest and Spread操做符(...)--用來聲明任意量的方法參數 function func1(...args) { args.forEach(function(arg){ console.log(arg); }) } func1(1,2,3);func1(1,3,4,5,6)//正向用 function func2(a,b,c) { console.log(a); console.log(b); console.log(c); } var args = [1,2],args1 = [5,6,7]; func1(...args);func1(...args1)//反向用 二、generater函數--控制函數的執行過程、手工暫停和恢復代碼執行 function* doSomething(){ console.log("start"); yield; console.log("finish") } var fun1 =doSomething(); func1.next();//會在yield的地方中止 func1.next(); 三、destructuring析構表達式--經過表達式將對象或數組拆解成任意數量的變量 function getStock(){ return { code:"IBM", price: { price1:100, price2:200 } } } var {code:codex,price:{price2}} = getStock(); console.log(codex); console.log(price2)//從對象中拆解 var array = [1,2,3,4]; var[number1,number2] = array; console.log(number1)//1 console.log(number2)//2 var[,,,number1,number2] = array; console.log(number1)//3 console.log(number2)//4 var[number1,number2,...others] = array; console.log(number1)//1 console.log(number2)//2 console.log(others)//[3,4]4、表達式和循環 一、箭頭表達式--用來聲明匿名函數,消除傳統匿名函數的this指針問題 var sun = (arg1,arg2) =>arg1+arg2//只有一行不用寫大括號,也不用寫return關鍵字 var sun =arg3 =>console.log(arg3)//只有一個參數時不用寫小括號 var myArray = [1,2,3,4,5,6]; console.log(myArray.filter(value =>value%2 == 0)) function gerStock(name:string){ this.name = name; setInterval(()=> { console.log("name is:" + this.name); },1000) } var stock = new getStock("IBM")//能夠看到打出來爲「name is: IBM」,消除了傳統匿名函數this指針問題,要是用ES5寫就拿不到IBM 二、forEach() ,for in 和 for of var myArray = [1,2,3,4]; myArray.desc = 'four number'; myArray.forEach(value=>console.log(value))//會忽略掉它的屬性,而且不能夠被打斷 for (var n in myArray){ console.log(n)//打出的鍵值對的鍵和屬性 0,1,2,3,desc console.log(myArray[n])//打出的每個值 } for (var n of myArray) { if(n>2) break; console.log(n) }//和forEach差很少只是能夠被打斷用break ;集合,數組均可以用,也能夠用在字符串上,這時會把字符串的每個字符都打印出來