Re: [問題] ECMA-262文件看不懂的地方

看板Ajax作者 (GN)時間7年前 (2017/03/31 17:02), 編輯推噓5(504)
留言9則, 7人參與, 最新討論串2/2 (看更多)
另外, 常看到有人這樣寫↓ (function(){ function a() {...} }).call(this); 對直譯器來說call也是函式呼叫, 直譯器也會立馬執行(function(){...})的內容. 裡面也是一個函式定義, 但這樣寫的好處是? 跟直接把function a(){...}拉到外面的差別是? ※ 引述《a2975313 (GN)》之銘言: : 最近在研究關於函式定義有哪些寫法, 所以有機會接觸到ecma文件, 但有些地方看不懂. : 裡面14.1 Function Definitions有用到[?Yield]或[+Default]或opt : 請問它這樣寫是代表什麼意思? : http://imgur.com/kGEkmO1
: ecma-262文件載點 : https://www.ecma-international.org/publications/standards/Ecma-262.htm -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.7.103 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1490950951.A.DC9.html

03/31 17:31, , 1F
差別在window.a
03/31 17:31, 1F

03/31 18:47, , 2F
自己的scope
03/31 18:47, 2F

03/31 18:50, , 3F
這把很常見啊 global namespace 會比較乾淨
03/31 18:50, 3F

03/31 18:50, , 4F
一些 transpiler 也會用這招包 code
03/31 18:50, 4F

04/01 13:56, , 5F
關鍵字是 IIFE
04/01 13:56, 5F

04/03 18:39, , 6F
IIFE, 用意是不污染全域命名空間
04/03 18:39, 6F

04/05 13:45, , 7F
這種寫法造成每次在 console debug 都沒有辦法執行 a
04/05 13:45, 7F

04/05 13:45, , 8F
是它的缺點....
04/05 13:45, 8F

04/06 14:22, , 9F
這不叫缺點吧,可以選擇要放哪些東西到window裡面
04/06 14:22, 9F
文章代碼(AID): #1OtXidt9 (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1OtXidt9 (Ajax)