Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产不卡毛片,中文字幕一区二区三区四区 ,变态拳头交视频一区二区

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript中箭頭函數(shù)的使用(Arrow F

          JavaScript中箭頭函數(shù)的使用(Arrow Function)

          頭函數(shù)(Arrow Function)是ES6新增的特性,在網(wǎng)上看了一篇個人博客的講解,寫的例子里面居然還有聲明的變量沒有被使用,卻還在招攬學(xué)生做IT培訓(xùn),真的誤人子弟。

          一個簡單的例子

          為了說明箭頭函數(shù),我們先寫個簡單的代碼:

          const domain_list=[
            'www.abot.cn',
            'www.tseo.cn',
            'www.weiduke.com',
            'yanyubao.tseo.cn'
          ];
          
          console.log(domain_list.map(domain_item=> domain_item.length));
          // expected output: Array [11, 11, 15, 16]
          

          關(guān)于JavaScript中map函數(shù)的使用,這里不贅述,不懂的抓緊惡補(bǔ)。

          重點(diǎn)看第8行。

          domain_item=> domain_item.length

          等價于以下寫法:

          function(domain_item) {return domain_item.length}

          所以以上代碼的ES5的寫法為:

          const domain_list=[
            'www.abot.cn',
            'www.tseo.cn',
            'www.weiduke.com',
            'yanyubao.tseo.cn'
          ];
          
          console.log(domain_list.map(function(domain_item) {
          	return domain_item.length;
          }));
          // expected output: Array [11, 11, 15, 16]
          

          箭頭函數(shù)基本語法

          總結(jié)總結(jié)一下,ES6的基本語法

          (param1, param2, …, paramN)=> { statements }

          (param1, param2, …, paramN)=> expression

          //相當(dāng)于:(param1, param2, …, paramN)=>{ return expression; }

          // 當(dāng)只有一個參數(shù)時,圓括號是可選的:

          (singleParam)=> { statements }

          singleParam=> { statements }

          // 沒有參數(shù)的函數(shù)應(yīng)該寫成一對圓括號。

          ()=> { statements }

          對照以上的例子,什么是箭頭函數(shù)應(yīng)該一目了然了。

          箭頭函數(shù)沒有單獨(dú)的this值

          this一般是這樣被定義的:

          • 如果是該函數(shù)是一個對象的方法,則它的this指針指向這個對象
          • 在嚴(yán)格模式下的函數(shù)調(diào)用下,this指向undefined
          • 如果是該函數(shù)是一個構(gòu)造函數(shù),this指針指向一個新的對象

          this的弊端

          function Person() {
            // Person() 構(gòu)造函數(shù)定義 `this`作為它自己的實(shí)例.
            this.age=0;
          
            setInterval(function growUp() {
              // 在非嚴(yán)格模式, growUp()函數(shù)定義 `this`作為全局對象,
              // 與在 Person()構(gòu)造函數(shù)中定義的 `this`并不相同.
              this.age++;
            }, 1000);
          }
          
          var p=new Person();

          在ECMAScript 3/5中,通過將this值分配給封閉的變量,可以解決this問題。

          function Person() {
            var that=this;
            that.age=0;
          
            setInterval(function growUp() {
              // 回調(diào)引用的是`that`變量, 其值是預(yù)期的對象.
              that.age++;
            }, 1000);
          } 

          或者,可以創(chuàng)建綁定函數(shù),以便將預(yù)先分配的this值傳遞到綁定的目標(biāo)函數(shù)(上述示例中的growUp()函數(shù))。

          箭頭函數(shù)的解決方案

          箭頭函數(shù)不會創(chuàng)建自己的this,它只會從自己的作用域鏈的上一層繼承this。因此,在下面的代碼中,傳遞給setInterval的函數(shù)內(nèi)的this與封閉函數(shù)中的this值相同:

          function Person(){
            this.age=0;
          
            setInterval(()=> {
              this.age++; // |this| 正確地指向 p 實(shí)例
            }, 1000);
          }
          
          var p=new Person();

          如果不理解以上代碼,那么再強(qiáng)調(diào)一遍:因為箭頭函數(shù)沒有this,所以setInterval函數(shù)中的箭頭函數(shù)的this,只能是他的上一級函數(shù)的this。如果說到這樣還不理解,建議惡補(bǔ)語文。

          高級語法和進(jìn)階

          箭頭函數(shù)的進(jìn)階知識,包括:

          • 1、高級語言規(guī)則
          • 2、嚴(yán)格模式下的使用
          • 3、call和apply的調(diào)用

          感興趣的小伙伴可以自個去研究。

          們經(jīng)常看到許多網(wǎng)站或者H5的動畫都做成了整屏切換的形式,為提高用戶體驗,會在首屏頁面下方放上一個動態(tài)的向下箭頭來提示用戶切換至下一屏。

          動態(tài)箭頭的效果圖如下:

          那么這種效果是如何實(shí)現(xiàn)的呢?

          其實(shí)非常簡單,在CSS3中提供了animation屬性,專門用于動畫。要使用這個屬性,需要先了解@keyframes的創(chuàng)建規(guī)則,在 @keyframes 中規(guī)定某項 CSS 樣式,就能創(chuàng)建由當(dāng)前樣式逐漸改為新樣式的動畫效果。

          在這個動畫中,我們能夠看出在整個動畫中改變的是箭頭的位置,所以我們在創(chuàng)建動畫時,只需要給定箭頭的起始位置,利用animation讓他動起來就可以了。

          接下來,我們一步一步完成。

          1、首先找到你所需要的箭頭圖片,將他利用定位的方式放在首屏的底部。

          a)html代碼(將圖片以背景或者插入圖片的形式放入標(biāo)簽內(nèi),demo以背景形式展示)

          b)css代碼(利用定位將箭頭放在首屏的底部適當(dāng)位置,網(wǎng)站中大部分情況會進(jìn)行左右居中)

          2、然后進(jìn)行動畫創(chuàng)建,最簡單的方式就是只給定初始的以及結(jié)束的css樣式即可。

          css 代碼

          標(biāo)注出來的為動畫的自定義名稱,可以根據(jù)你的動畫行為來定義。

          0%為初始狀態(tài),即剛開始動畫時。

          100%為結(jié)束狀態(tài),即動畫進(jìn)行到100%時。

          動畫改變了箭頭的底部位置,由距離底部80像素變到了距離底部0像素。

          3、接下來利用animation屬性讓他具有動畫效果

          css代碼:

          第一個參數(shù)表示你所使用的動畫的名稱(即我們創(chuàng)建的動畫的動畫名稱),

          第二個參數(shù)表示動畫完成的時間(即由0%到100%所用的時間),

          第三個參數(shù)表示動畫執(zhí)行的次數(shù)(可以為任意數(shù)字,infinite表示規(guī)定動畫無限次播放),因此造成了一個動態(tài)的箭頭的視覺效果。

          通過以上三個步驟即可完成這個簡單的動畫效果,很多的動畫效果都可以通過創(chuàng)建動畫的方式來實(shí)現(xiàn)。

          原文地址北京市盛世陽光文化傳播有限責(zé)任公司:http://www.gonet.com.cn/webduirshow-140.html

          我們深入研究一下箭頭函數(shù)。

          箭頭函數(shù)不僅僅是編寫簡潔代碼的“捷徑”。它還具有非常特殊且有用的特性。

          JavaScript 充滿了我們需要編寫在其他地方執(zhí)行的小函數(shù)的情況。

          例如:

          • arr.forEach(func) —— forEach 對每個數(shù)組元素都執(zhí)行 func
          • setTimeout(func) —— func 由內(nèi)建調(diào)度器執(zhí)行。
          • ……還有更多。

          JavaScript 的精髓在于創(chuàng)建一個函數(shù)并將其傳遞到某個地方。

          在這樣的函數(shù)中,我們通常不想離開當(dāng)前上下文。這就是箭頭函數(shù)的主戰(zhàn)場啦。

          一、箭頭函數(shù)沒有 “this”

          正如我們在 對象方法,"this" 一章中所學(xué)到的,箭頭函數(shù)沒有 this。如果訪問 this,則會從外部獲取。

          例如,我們可以使用它在對象方法內(nèi)部進(jìn)行迭代:

          let group={
            title: "Our Group",
            students: ["John", "Pete", "Alice"],
          
            showList() {
              this.students.forEach(
                student=> alert(this.title + ': ' + student)
              );
            }
          };
          
          group.showList();

          這里 forEach 中使用了箭頭函數(shù),所以其中的 this.title 其實(shí)和外部方法 showList 的完全一樣。那就是:group.title

          如果我們使用正常的函數(shù),則會出現(xiàn)錯誤:

          let group={
            title: "Our Group",
            students: ["John", "Pete", "Alice"],
          
            showList() {
              this.students.forEach(function(student) {
                // Error: Cannot read property 'title' of undefined
                alert(this.title + ': ' + student)
              });
            }
          };
          
          group.showList();

          報錯是因為 forEach 運(yùn)行它里面的這個函數(shù),但是這個函數(shù)的 this 為默認(rèn)值 this=undefined,因此就出現(xiàn)了嘗試訪問 undefined.title 的情況。

          但箭頭函數(shù)就沒事,因為它們沒有 this

          不能對箭頭函數(shù)進(jìn)行 new 操作

          不具有 this 自然也就意味著另一個限制:箭頭函數(shù)不能用作構(gòu)造器(constructor)。不能用 new 調(diào)用它們。

          箭頭函數(shù) VS bind

          箭頭函數(shù) => 和使用 .bind(this) 調(diào)用的常規(guī)函數(shù)之間有細(xì)微的差別:

          • .bind(this) 創(chuàng)建了一個該函數(shù)的“綁定版本”。
          • 箭頭函數(shù) => 沒有創(chuàng)建任何綁定。箭頭函數(shù)只是沒有 thisthis 的查找與常規(guī)變量的搜索方式完全相同:在外部詞法環(huán)境中查找。

          二、箭頭函數(shù)沒有 “arguments”

          箭頭函數(shù)也沒有 arguments 變量。

          當(dāng)我們需要使用當(dāng)前的 thisarguments 轉(zhuǎn)發(fā)一個調(diào)用時,這對裝飾器(decorators)來說非常有用。

          例如,defer(f, ms) 獲得了一個函數(shù),并返回一個包裝器,該包裝器將調(diào)用延遲 ms 毫秒:

          function defer(f, ms) {
            return function() {
              setTimeout(()=> f.apply(this, arguments), ms)
            };
          }
          
          function sayHi(who) {
            alert('Hello, ' + who);
          }
          
          let sayHiDeferred=defer(sayHi, 2000);
          sayHiDeferred("John"); // 2 秒后顯示:Hello, John

          不用箭頭函數(shù)的話,可以這么寫:

          function defer(f, ms) {
            return function(...args) {
              let ctx=this;
              setTimeout(function() {
                return f.apply(ctx, args);
              }, ms);
            };
          }

          在這里,我們必須創(chuàng)建額外的變量 argsctx,以便 setTimeout 內(nèi)部的函數(shù)可以獲取它們。

          三、總結(jié)

          箭頭函數(shù):

          • 沒有 this
          • 沒有 arguments
          • 不能使用 new 進(jìn)行調(diào)用
          • 它們也沒有 super,但目前我們還沒有學(xué)到它。我們將在 類繼承 一章中學(xué)習(xí)它。

          這是因為,箭頭函數(shù)是針對那些沒有自己的“上下文”,但在當(dāng)前上下文中起作用的短代碼的。并且箭頭函數(shù)確實(shí)在這種使用場景中大放異彩。


          主站蜘蛛池模板: 伊人无码精品久久一区二区| 国产未成女一区二区三区| 99精品国产一区二区三区| av无码一区二区三区| 国产福利一区二区三区视频在线| 中文字幕一区在线播放| 中文字幕精品一区二区| 无码av免费一区二区三区试看| 国产亚洲一区区二区在线| 国产一区韩国女主播| 日本免费一区二区三区最新| 久久久av波多野一区二区| 久久久久人妻精品一区二区三区| 中文字幕人妻丝袜乱一区三区 | 成人丝袜激情一区二区| 中文字幕一区视频| 日韩欧国产精品一区综合无码| 真实国产乱子伦精品一区二区三区 | 久久国产精品一区| 一区二区三区国模大胆| 亚洲毛片不卡av在线播放一区| 亚洲成人一区二区| 激情啪啪精品一区二区| 亚洲AV永久无码精品一区二区国产| 变态调教一区二区三区| 精品人妻少妇一区二区三区| 中文日韩字幕一区在线观看| 欧洲精品无码一区二区三区在线播放| 国产一区二区视频在线观看| 久久综合九九亚洲一区| 国产精品视频分类一区| 韩国一区二区三区| 日本精品一区二区三区四区 | 国产精品分类视频分类一区| 一区二区三区视频| 精品国产一区二区三区av片| 无码人妻久久一区二区三区蜜桃| a级午夜毛片免费一区二区| 色欲综合一区二区三区| 在线视频一区二区三区四区| 国产精品亚洲高清一区二区|