TypeScript箭头函数(第3篇)
<div class="cnblogs_code"><p style="text-align: center"><span style="font-size: 18pt"> TypeScript箭头函数(第3篇)</span></p>
</div>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不带参数的写法</span>
let fun1 = ()=> 1<span style="color: rgba(0, 0, 0, 1)">;
let fun2 </span>= ()=> 1+2<span style="color: rgba(0, 0, 0, 1)">;
let fun3 </span>= ()=> {<span style="color: rgba(0, 0, 255, 1)">return</span> 1+2<span style="color: rgba(0, 0, 0, 1)">;};
let fun4 </span>= ()=> {let a = 1; <span style="color: rgba(0, 0, 255, 1)">return</span> a+2<span style="color: rgba(0, 0, 0, 1)">;};
fun1() </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">就这么调用,如果要看值,需要console输出。例如: console.log(fun1()) </span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">一个参数的写法(没有指定返回类型的时候,函数会自动推导)</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><strong>完整的写法</strong></span>. <span style="color: rgba(255, 0, 0, 1)"><strong>:(data:number) =>number</strong></span>是<span style="color: rgba(255, 0, 0, 1)">函数类型</span></span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)">let fun5 = (data:number)=> data * data;</span>
let fun5<span style="color: rgba(255, 0, 0, 1)"><strong>:(data:number) =>number</strong> </span>= (data:number)=> data *<span style="color: rgba(0, 0, 0, 1)"> data;
let num5 </span>= fun5(2<span style="color: rgba(0, 0, 0, 1)">);
console.log(num5);
let fun6 </span>= (data:number)=> {<span style="color: rgba(0, 0, 255, 1)">return</span> data*<span style="color: rgba(0, 0, 0, 1)">data};
let fun7 </span>= (data:number)=> {data = data+1; <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> data};
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">一个参数,指定了某个返回类型的写法</span>
let fun8 = (data:number):number=> {data = data+1; <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> data};
fun5(</span>666)<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">就这么调用</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">两个参数的写法(没有指定返回类型的时候,函数会自动推导)</span>
let fun9 = (data1:number, data2:number)=> data1+<span style="color: rgba(0, 0, 0, 1)">data2;
let fun10 </span>= (data1:number, data2:number)=> {<span style="color: rgba(0, 0, 255, 1)">return</span> data1><span style="color: rgba(0, 0, 0, 1)">data2};
let fun11 </span>= (data1:number, data2:number)=> {data1 += data2 ; <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> data1};
let fun12 </span>= (data1:number, data2:number):<span style="color: rgba(0, 0, 255, 1)">boolean</span>=> {<span style="color: rgba(0, 0, 255, 1)">return</span> data1><span style="color: rgba(0, 0, 0, 1)">data2};
let fun13 </span>= (data1:number, data2:number):<span style="color: rgba(0, 0, 255, 1)">boolean</span>=> data1><span style="color: rgba(0, 0, 0, 1)">data2;
fun9(</span>12,13) <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 就这么调用</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">嵌套. (data3:number, data4:number)=>{return data3>data4}是匿名函数,用()扩起来,作为函数赋值给fun14</span>
let fun14 = (data1:number, data2:number)=> ((data3:number, data4:number)=>{<span style="color: rgba(0, 0, 255, 1)">return</span> data1+data2+data3+<span style="color: rgba(0, 0, 0, 1)">data4});
let ab </span>= fun14(1,2<span style="color: rgba(0, 0, 0, 1)">);
console.log(ab(</span>3,4<span style="color: rgba(0, 0, 0, 1)">));
console.log(fun14(</span>1,2)(3,4));</pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果箭头函数的函数体只有一句代码,就是返回一个对象,可以像下面这样写:</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 用小括号包裹要返回的对象,不报错</span>
let getTempItem1 = (id:number) => ({ id: id, name: "Temp"<span style="color: rgba(0, 0, 0, 1)"> });
let getTempItem2 </span>= (id:number) =><span style="color: rgba(0, 0, 0, 1)"> { idd: id};
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 但绝不能这样写,会报错。</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 因为对象的大括号会被解释为函数体的大括号</span>
let getTempItem3 = (id:number) => { idd: id, name: "Temp" };</pre>
</div>
<p> </p>
<p>箭头函数最常见的用处就是简化回调函数。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 例子一</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 正常函数写法</span>
.map(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (x) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> x *<span style="color: rgba(0, 0, 0, 1)"> x;
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 箭头函数写法</span>
.map(x => x *<span style="color: rgba(0, 0, 0, 1)"> x);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 例子二</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 正常函数写法</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> result = .sort(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (a, b) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> a -<span style="color: rgba(0, 0, 0, 1)"> b;
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 箭头函数写法</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> result = .sort((a, b) => a - b);</pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>数组类型的完整定义</p>
<div class="cnblogs_code">
<pre>let arr1:number[] = ;
arr1.push(</span>5<span style="color: rgba(0, 0, 0, 1)">);
let arr2:Array</span><number> = ;
arr2.push(</span>9<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 数组中允许出现任意类型的值</span>
let arr4: any[] = ;
console.log(arr1);
console.log(arr2);</span></pre>
</div>
<p> </p>
<p>this指针的范围</p>
<div class="cnblogs_code">
<pre>let demo =<span style="color: rgba(0, 0, 0, 1)"> {
name: </span>'Demo'<span style="color: rgba(0, 0, 0, 1)">,
show: </span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> ()=><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.name);
}
}
}
let d </span>=<span style="color: rgba(0, 0, 0, 1)"> demo.show();
d();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Demo</span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre>const obj = { name: '张三'<span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> fn () {
console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">this 指向 是obj对象</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> () =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象</span>
<span style="color: rgba(0, 0, 0, 1)"> }
}
const resFn </span>=<span style="color: rgba(0, 0, 0, 1)"> fn.call(obj);
resFn();</span></pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
<p> </p>
<p> </p>
<div id="AllanboltSignature">
<div>作者:小乌龟</div>
<div>出处:http://www.cnblogs.com/music-liang/</div>
<div> 【转载请注明出处,欢迎转载】 希望这篇文章能帮到你 </div>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/music-liang/p/12725681.html
頁:
[1]