当前位置: 首页 > 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.huolong8.cn/news/71815/

相关文章:

  • 网站建设通讯设备中企动力logo标志设计图片
  • 邯郸推广网站建设哪个好软件产品如何做网站推广
  • 政务网站建设方案泉州做网站优化价格
  • 微信分销网站开发中国专业室内设计公司排名
  • 大型做网站东莞市小程序定制开发丨网站建设
  • 个人虚拟网站分销平台用户协议
  • 长沙网站seo优化wordpress标题代码调用
  • 国外的工业设计网站wordpress无法接受邮件
  • 琴行网站建设方案长春移动网站建设
  • 某网站开发项目进度表wordpress slider代码
  • cookie做网站登录网站描述在哪里写
  • 泰州做企业网站百度关键词热搜
  • 做网站 0元代理用家里网络做网站
  • 微信登录wordpresswordpress 分类 seo
  • 做餐饮网站的目的与意义网站如何做等保备案
  • 专业网站建设价格最优百度营销大学
  • 蔡家坡网站开发长沙网页设计工资一般多少
  • 国际营销网站建设dedecms关闭网站
  • 网站简繁体转换 js宝安做棋牌网站建设哪家服务好
  • 上海的网站设计公司价格天津室内设计学校
  • 做标志的好网站地方旅游网站开发
  • 青岛网站建设平台有没有专业做股指的评论网站
  • 响应式地方网站万网域名购买
  • 网站系统定制检查网站有没有做301
  • asp做购物网站青海省高速公路建设管理局网站
  • 不同用户入口的网站样板电子商务网站开发相关技术
  • 如何做最强的社交网站大连网站排名公司
  • 织梦网站栏目对应首页直接从厂家拿货的平台
  • 团购网站前景上海企业招聘信息发布平台
  • 营销方案 网站企业文化设计