Re: [問題] 匿名函式 問題 ??
(0, eval)('this')
(0, eval) 是個Comma Operator ( http://es5.github.io/#x11.14 )
Comma Operator的特性會從左到右執行內容,然後回傳最後一個參數結果
前面這個0可以不理會,所以(0, eval)('this')可以想像成以下式子
eval('this')
值得注意的是此時的(0, eval)是indirect call
意思是這個eval所使用的scope是global的 (通常是window)
所以這個this就會回傳window了
可以參考這裡回應的sample code
http://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript
縮
http://tinyurl.com/d69x8cu
code:
var x = 'outer';
(function() {
var x = 'inner';
eval('console.log("direct call: " + x)');
(1,eval)('console.log("indirect call: " + x)');
})();
很有趣:)
※ 引述《kuangs (kuangs)》之銘言:
: 最近看到一篇技術文章 在討論"Javascript 語言核心"
: (出處
: http://www.codedata.com.tw/uncategorized/essential-javascript-19-namespace/)
: 對於其中的 一小段程式碼有疑問
: -----------------內文內容----------------
: 在設計程式庫時,若有名稱想避免別人佔用干擾,則有個慣用手法。
: 例如,若不想被別人佔用干擾 global 這個名稱,則可以如下:
: (function(global) {
: var global.openhome = global.openhome || {};
: ...
: })((0, eval)('this'));
: ------------------------------------------------------
: 想請問一下 文中(0, eval)('this') 作用是甚麼??
: 小弟接觸Javascript不深
: 身邊也沒有高手指導
: 如問題違反規定 請告知
: 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.8.201
※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1413800051.A.A61.html
推
10/20 20:04, , 1F
10/20 20:04, 1F
推
10/20 23:35, , 2F
10/20 23:35, 2F
推
10/21 07:12, , 3F
10/21 07:12, 3F
→
10/21 07:13, , 4F
10/21 07:13, 4F
推
10/21 19:40, , 5F
10/21 19:40, 5F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章