标签:模块 作用域链 日记 报错 col var exports 加载 默认
测试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
1.加载模块并执行模块中的代码;
2.返回exports对象;
1.所有模块都有一个exports对象,默认值是一个空对象`{}`;
2.可以给exports对象添加属性;
1.require js文件时可以舍去.js,require("./package.js")等价于require("./package")
标签:模块 作用域链 日记 报错 col var exports 加载 默认
原文地址:https://www.cnblogs.com/langyjn/p/9142164.html