栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在CoffeeScript中定义全局变量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在CoffeeScript中定义全局变量?

由于coffee脚本没有

var
语句,因此它会自动将其插入coffee脚本中的所有变量,这样可以防止已编译的Javascript版本将所有内容泄漏到
全局命名空间中

因此,由于没有办法故意从咖啡脚本方面使某些内容“泄漏”到 全局名称空间中 ,因此您需要将全局变量定义为 全局对象的 属性。

将它们作为属性附加在窗口上

这意味着您需要执行类似之类的操作

window.foo = 'baz';
来处理浏览器的情况,因为那里的 全局对象
window

Node.js

在Node.js中没有

window
对象,而是有一个
exports
对象传递给包装Node.js模块的包装器,因此在Node.js中,您需要做的是
exports.foo= 'baz';

现在,让我们看看它在您的文档中的报价中指出的内容:

…针对CommonJS和浏览器:root = exports?这个

显然,这是咖啡脚本,因此让我们看一下它实际编译成的内容:

var root;root = (typeof exports !== "undefined" && exports !== null) ? exports : this;

首先,它将检查是否

exports
已定义,因为尝试在Javascript中引用不存在的变量会否则产生SyntaxError(与结合使用时除外
typeof

因此,如果

exports
存在(在Node.js(或写得不好的WebSite
…)中),则根目录将指向
exports
,否则指向
this
。那是
this
什么

(function() {...}).call(this);

使用

.call
上的功能将绑定
this
功能里面第一个参数传递,在浏览器的情况下,
this
现在会是
window
对象,在Node.js的的情况下,这将是
全球范围内 它也可作为
global
对象。

但是,由于您

require
在Node.js中具有该函数,因此无需
global
在Node.js中为该对象分配某些内容,而是您可以分配给该
exports
对象,然后该对象将由
require
函数返回。

Coffee-script

经过所有这些解释之后,您需要执行以下操作:

root = exports ? thisroot.foo = -> 'Hello World'

这将

foo
在全局名称空间中声明我们的函数(无论发生什么情况)。
就这样 :)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号