91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES6的yield示例分析

發布時間:2021-11-12 09:57:08 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

這篇文章主要講解了“ES6的yield示例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ES6的yield示例分析”吧!

  近期ES6標準如火如荼的發展,其中主要還是各大瀏覽器的支持,最重要廠商支付寶,微信的支持,使得國內的發展也很迅猛。這里主要是對yield關鍵字的,yield實際上可以看作是一種新的中斷機制,大家都知道javascript函數執行是順序的,中途沒有暫停,等待消息只能通過回調或者settimeout等延遲檢查來完成。

  對ES6的yield示例分析

  有些示例說yield和線程有關系,不過我在官方示例中沒看出來,好了進入主題,先來看看官方示例。

  function*foo(x){

  vary=2*(yield(x+1));

  varz=yield(y/3);

  return(x+y+z);

  }

  varit=foo(5);

  console.log(it.next());

  console.log(it.next(12));

  console.log(it.next(13));

  //返回值是{value:6,done:false},{value:8,done:false},{value:42,done:true}

  yield示例要點

  第一點:foo需要是*型的,新增的*帶來的是這個函數指針,這個函數必須是*型的,否則的話varit=foo(5),就表示得到函數執行的結果,而指針型的,表示it取得該函數。

  第二點:第一個it.next()表示開始執行函數,直到第一個yield停止。返回值是yield(表達式的值),這個時候的返回時是x+1,x是5,結果就是6.這里的it.next如果帶參數,則參數會被忽略,因為首次執行沒有參數可再傳遞.

  第三點:第二個it.next(12)表示上一個yield的返回結果是12,帶進去也就是vary=2*12;這個地方必須帶值,因為yield內是表達式(x+1),不是常量,無法自己計算,這里為什么不把之前的x缺省帶進去計算,只能說目前的機制不是這樣,

  應該是考慮到實現的復雜程序,因為這里的x是一個變量,實際運行中,這個還可能是表達式,甚至還有作用域的問題考慮,這里計算出的y=2*12=24,一直計算到下一個yield(24/3),結果是8。

  第四點:第三個it.next(13)同樣表示上一個yield的返回結果是13,帶進去也就是varz=13;后面已經沒有yield了,就去函數的返回值return5+24+13,結果等于42,這個時候done的值是true,表示函數結束。

  重要的總結下:function需要是指針,記住yield(表達式)執行的結果是上一個執行的值。

  這樣yield的關鍵字是不是清晰了?

  在實際工作中并不是it.next()一定要到函數最終的return,例如第一次執行it.next(),取得返回值不符合預期的值,可以直接不執行后期的next了,例如多層校驗。

感謝各位的閱讀,以上就是“ES6的yield示例分析”的內容了,經過本文的學習后,相信大家對ES6的yield示例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安新县| 宜兴市| 连平县| 丰台区| 娱乐| 马山县| 滨州市| 昭苏县| 贵阳市| 襄汾县| 永善县| 云霄县| 扎囊县| 武乡县| 宝丰县| 青神县| 东丽区| 沁水县| 绍兴市| 东山县| 苍山县| 云浮市| 昌乐县| 贞丰县| 陆丰市| 胶南市| 磴口县| 南投市| 东安县| 泰顺县| 沙田区| 浠水县| 健康| 尼玛县| 长宁区| 鄯善县| 四会市| 大石桥市| 龙胜| 永吉县| 长丰县|