作者a2975313 (GN)
看板Ajax
標題Re: [問題] ECMA-262文件看不懂的地方
時間Fri Mar 31 17:02:28 2017
另外, 常看到有人這樣寫↓
(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
推 Qiqi: 差別在window.a 03/31 17:31
推 icydream: 自己的scope 03/31 18:47
推 Neisseria: 這把很常見啊 global namespace 會比較乾淨 03/31 18:50
→ Neisseria: 一些 transpiler 也會用這招包 code 03/31 18:50
→ eight0: 關鍵字是 IIFE 04/01 13:56
推 CCben: IIFE, 用意是不污染全域命名空間 04/03 18:39
推 visa9527: 這種寫法造成每次在 console debug 都沒有辦法執行 a 04/05 13:45
→ visa9527: 是它的缺點.... 04/05 13:45
→ ssccg: 這不叫缺點吧,可以選擇要放哪些東西到window裡面 04/06 14:22