ตั้งแต่สคริปต์กาแฟไม่มีvarคำสั่งโดยอัตโนมัติแทรกสำหรับตัวแปรทั้งหมดในกาแฟสคริปต์ว่าวิธีที่จะป้องกันไม่ให้รุ่น JavaScript รวบรวมจากการรั่วไหลทุกอย่างลงในnamespace   โลก
ดังนั้นเนื่องจากมีวิธีที่จะทำให้สิ่งที่ "รั่ว" ในไม่มีnamespace โลกจากด้านกาแฟสคริปต์ของสิ่งที่เกี่ยวกับวัตถุประสงค์คุณจำเป็นต้องกำหนดตัวแปรทั่วโลกของคุณเป็นคุณสมบัติของวัตถุทั่วโลก
  แนบเป็นคุณสมบัติในหน้าต่าง
ซึ่งหมายความว่าคุณจะต้องทำสิ่งที่ชอบwindow.foo = 'baz';ซึ่งจัดการกรณีที่เบราว์เซอร์เนื่องจากมีวัตถุทั่วโลกwindowเป็น
Node.js
ใน Node.js ไม่มีwindowวัตถุ แต่มีexportsวัตถุที่ถูกส่งผ่านเข้าไปใน wrapper ที่ล้อมโมดูล Node.js (ดูที่: https://github.com/ry/node/blob/master/src/node.js# L321 ) ดังนั้นใน Node.js exports.foo = 'baz';สิ่งที่คุณจะต้องทำคือ
ตอนนี้ให้เราดูสิ่งที่ระบุไว้ในใบเสนอราคาของคุณจากเอกสาร:  
  ... กำหนดเป้าหมายทั้ง CommonJS และเบราว์เซอร์: root = export หรือไม่ นี้
เห็นได้ชัดว่านี่เป็นสคริปต์กาแฟดังนั้นลองมาดูกันว่าสิ่งที่รวบรวมไว้เพื่อ:  
var root;
root = (typeof exports !== "undefined" && exports !== null) ? exports : this;
ก่อนอื่นจะตรวจสอบว่าexportsมีการกำหนดหรือไม่เนื่องจากพยายามอ้างอิงตัวแปรที่ไม่มีอยู่ใน JavaScript มิฉะนั้นจะส่งผลให้เกิด SyntaxError (ยกเว้นเมื่อใช้กับtypeof)
ดังนั้นถ้าexportsมีอยู่แล้วซึ่งในกรณี Node.js (หรือในเว็บไซต์ที่เขียนไม่ดี ... ) รากจะชี้ไปมิฉะนั้นจะexports thisแล้วอะไรthisล่ะ
(function() {...}).call(this);
การใช้.callฟังก์ชั่นจะผูกthisไว้ข้างในฟังก์ชั่นกับพารามิเตอร์แรกที่ผ่านไปในกรณีที่เบราว์เซอร์thisจะเป็นwindowวัตถุในกรณีของ Node.js มันจะเป็นบริบททั่วโลกซึ่งยังเป็นglobalวัตถุ  
แต่เนื่องจากคุณมีrequireฟังก์ชั่นใน Node.js จึงไม่จำเป็นต้องกำหนดบางสิ่งให้กับglobalวัตถุใน Node.js แทนคุณจึงกำหนดให้กับexportsวัตถุที่ได้รับคืนโดยrequireฟังก์ชัน
กาแฟสคริปต์
หลังจากคำอธิบายทั้งหมดนี่คือสิ่งที่คุณต้องทำ:  
root = exports ? this
root.foo = -> 'Hello World'
สิ่งนี้จะประกาศฟังก์ชันของเราfooในเนมสเปซส่วนกลาง (ไม่ว่าจะเกิดอะไรขึ้น) 
นั่นคือทั้งหมดที่ :)