node.js学习日记node.js的作用域
Posted langyjn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js学习日记node.js的作用域相关的知识,希望对你有一定的参考价值。
node.js的作用域
测试package1能否能通过require("./package2")来调用package2内的函数:
1 //paackage1.js 2 var a1 = 1; 3 4 require("./package2"); 5 6 /*即使require了package2,也无法调用函数double_a*/ 7 a1 = double_a(a1);//double_a is not defined 8 9 console.log("package1:" + a1);
1 //paackage2.js 2 function double_a(a) { 3 return a * 2; 4 } 5 6 exports.double_a = double_a;
报错了,并不能调用
package1要调用package2内的函数的正确方式:
1 //package1 2 var a1 = 1; 3 4 /*todo:获取了package2的exports对象*/ 5 var package2 = require("./package2"); 6 7 a1 = package2.double_a(a1); 8 console.log("package2:" + a1);
1 //package2 2 function double_a(a) { 3 return a * 2; 4 } 5 6 /*todo:把double_a挂载到exports对象*/ 7 exports.double_a = double_a;
成功调用函数
再来试一个,利用作用域链,让package1获取package2内的变量
1 //package1 2 var package2 = require("./package2"); 3 console.log("name:" + package2.getName());
1 //package2 2 var name = "lyjn"; 3 4 /*todo:exports设置一个getName的方法获取name*/ 5 exports.getName = function() { 6 return name; 7 };
完全OK
2.知识要点
在node中只有模块作用域,没有全局作用域
require的主要作用
1.加载模块并执行模块中的代码;
2.返回exports对象;
exports对象
1.所有模块都有一个exports对象,默认值是一个空对象`{}`;
2.可以给exports对象添加属性;
小技巧
1.require js文件时可以舍去.js,require("./package.js")等价于require("./package")
以上是关于node.js学习日记node.js的作用域的主要内容,如果未能解决你的问题,请参考以下文章