当前位置: 首页 > news >正文

网站设计 字体免费版权申请入口

网站设计 字体,免费版权申请入口,深圳福田网站制作公司,关于网站建设电话销售的话术引 在node.js中我们可以使用module.exports和exports导出模块#xff0c;设置导出函数、数组、变量等等 为什么可以用这两个模块#xff1f; 或者直接问#xff0c;node.js的模块功能是怎么实现的。 这样得益于javascript是函数性的语言#xff0c;并支持闭包。 js的闭包 直…引 在node.js中我们可以使用module.exports和exports导出模块设置导出函数、数组、变量等等 为什么可以用这两个模块 或者直接问node.js的模块功能是怎么实现的。 这样得益于javascript是函数性的语言并支持闭包。 js的闭包 直接看w3cschool吧感觉讲的挺好的js闭包 node.js的模块实现大致代码 首先准备一个nodejs规范的代码 hello.js var s Hello; var name world;console.log(s name !); Node.js加载了hello.js后它把这段代码包装一下大概变成这样 var module {id: hello,exports: {} }; var load function () {// 实际我们自己编写的hello.js代码:function greet(name) {console.log(Hello, name !);}module.exports greet;// hello.js代码结束return module.exports; }; var exports load(); // 保存module: save(module, exports); module是nodejs自动加的一个对象可见初始化的时候会先对module.exports赋值一个空的对象{}。 save(module, exports);这个函数是个真·全局函数作用是把exports这个变量存到某个全局变量中。其它模块通过require()函数实际上就是去这个全局变量里把对应的值拿出来。 这样看js代码大概就明白了为什么在nodejs里可以直接用module.exports和exports这两个语法。 module.exports和exports module.exports和exports实际上都是对一个对象的引用这个对象初始化就是一个空对象{}。所以直接就可以使用类似 示例一 module.exports.foo function () { return foo; }; module.exports.bar function () { return bar; }; 或者示例二 exports.foo function () { return foo; }; exports.bar function () { return bar; }; 这两个示例作用是一样的其本质都是往最开始初始化的空数组里添加成员。 示例三 module.exports {hello: hello,greet: greet }; 示例三就不一样了实际上module.exports重新引用到了一个新的对象里。如果示例三前面有示例一或者二的代码那么会最终导致示例一或者二导出的模块丢掉。 示例四 exports {hello: hello,greet: greet }; 示例四看上去虽然和示例三差不多但是这种写法实际上并没有输出任何变量注意看nodejs的实现代码load()函数里最后return的是module.exports也就是说最后save的是module.exports的引用对象而示例四中exports被赋值了一个新的对象此时module.exports和exports引用的已经不是同一个对象了 那么提问示例三虽然对module.exports重新引用到了一个新的对象最终结果也能实现模块的正常导出那么示例三里的exports此时引用的是什么对象呢 最后如果你打算导出一个数组或者变量或者函数都会涉及到module.exports原引用对象的丢弃要额外注意此时要小心不要丢掉前面已经导出的模块。 结论 如果要输出一个键值对象{}可以利用exports这个已存在的空对象{}并继续在上面添加新的键值 如果要输出一个函数或数组必须直接对module.exports对象赋值。 所以我们可以得出结论直接对module.exports赋值可以应对任何情况 module.exports {foo: function () { return foo; } }; 或者 module.exports function () { return foo; }; 最终我们强烈建议使用module.exports xxx的方式来输出模块变量这样你只需要记忆一种方法。 或者使用我喜欢的方法,对空对象直接添加值 var foo function () { return foo; };...module.exports.foo foo;// module.exports.bar function () { return bar; }; 参考 liaoxuefeng exports 和 module.exports 的区别 w3cschool JS是按值传递还是按引用传递?但是我不是很同意文中所说的按共享传递这名字的叫法。实际上无论传递普通变量还是传递函数都是按值拷贝传递只不过传递对象的时候拷贝过去的是个引用变量罢了即引用副本。 这里就是c语言指针的思想。 如果你对我上面所讲的还不明白建议去把c语言里的指针好好的重学一遍。真正理解透彻了c里面的指针学起来其它所有语言都不怕。 转载于:https://www.cnblogs.com/acbingo/p/7709363.html
http://www.sadfv.cn/news/71815/

相关文章:

  • 宁波做网站seo的网站自己可以备案吗
  • 济南泰安网站建设公司软装设计公司介绍
  • 个人域名能做网站吗初创企业网站建设流程
  • 建筑网站do百度小说搜索风云榜排名
  • 南宁企业网站建站网站建设搭建微商导航网站
  • 化妆品做备案的网站营业执照年审登录入口官网
  • 网站模块如何添加手机网站和微信网站的区别
  • 网站后台怎么制作洛阳住房和城乡建设厅网站
  • 做写字楼租赁用什么网站好网页设计素材以及效果图
  • 手机网站 生成app东营市公共资源交易网
  • 拓网手机版网站管理系统手机app应用制作
  • 怎么学好网站建设渝快办官方网站
  • 扁平化设计个人网站国际交流网站建设方案
  • excel 表格 做的网站网站建设主要学什么
  • 1 童装网站建设目标如何用ae做模板下载网站
  • 网站页面设计与实现wordpress建两个网站吗
  • 怎么删除网站里的死链接psd网站首页图片
  • 云企网站建设开发菜鸟教程python
  • 杭州网站建设 seo怎么把网站扒下来
  • 一个网站建设哪家快html5网页制作代码成品
  • 大连网站建设意动科技公司什么网站可以找人做设计
  • 怎么做一个企业的网站注册完域名怎么做网站
  • 乐山做美食推荐的网站wordpress ajax评论
  • 支付公司网站制作费怎么做分录韶关网站建设的公司
  • 地方网站域名免费代理服务器proxy
  • 做公司网站要钱吗骨骼型的网站
  • 萍乡网站建设哪家好哦网站建设yu
  • 泉州企业网站建设公司洛阳做网站公司电话
  • 百度做公司网站需要多少钱提供免费网站建设
  • 买衣服的网站排行榜建中英文网站