Nodejs 这段代码里的三个变量从哪来的
Nodejs 这段代码里的三个变量从哪来的
在网上看到别人的代码,代码如下(我省掉了很多,其中这一段看不懂):
下面的代码是在一个 js 文件里
var login_logic = require("../xxxx");
var handler = {
"201" : new on_user_login()
}
function on_user_login()
{
this.handle = function(data,send,s) // 这里的 data、send、s 这 3 个变量怎么来的?
{
login_logic.on_user_login(data,send,s);
}
}
那不是变量,那是形参。
对,说错了,是形参 。
在上面调用的时候没有传参数进来,这里为什么有了呢?
需要传进来的是实参。
onHandle 是个事件处理程序,应该是事件管理器负责传过去的。
这个只是 new 了一个对象,并没有调用 handle 这个方法
楼主这个代码我还仔细看了半天想看看有什么玄机,看了半天发现没有,战战兢兢的看完底下的回复…好吧,确实没有
大哥,1 楼已经说得很明白了。
虽然不懂 js,但这里是声明了一个 function 并赋值给 this.handle,所以只是声明
简单来说就是 1 楼回答
Js 里都是对象,包括函数本身
虽然不懂 js,但是 handle 是个函数,应该用于回调吧
1.xxxx 是个模块,导出一个对象,被声明为私有变量 login_logic。
2.还有另一个私有变量 handler 对象,有一个属性名为 201,值为 on_user_login 构造函数的一个实例。
3.on_user_login 虽然没有首字母大写,也被作为构造函数使用了,含有一个属性 handle,值为一个方法,形参为 data, send, s,会调用 xxxx 模块实例的 on_user_login 方法。
调用时这样:handler[“201”].handle(实参 data, 实参 send, 实参 s)。
我的理解是这样
#2 这段代码比较绕的是给自己的对象(function on_user_login)和外部模块的对象(login_logic.on_user_login)起了一样的名字,实际那个需要参数的函数(后者)并没有被调用,只是作为方法被引用了一下
如果学过 Java 的话,大约类似别人定义了一个接口,你必须复写然后由别人 or 别的方法调用
这就是函数声明嘛。只不过是嵌套函数,类比其他编程语言中的 lambda 表达式。
在Node.js中,变量的来源通常可以分为几种情况:全局变量、函数参数、函数内部声明或赋值、模块导出和引入等。为了具体回答你的问题,我需要一个代码示例,但由于你没有提供具体的代码段,我将给出一个假设性的示例来说明这些变量的可能来源。
假设我们有以下Node.js代码:
// 假设这是moduleA.js
let globalVar = 'I am a global variable';
function exampleFunction(param1, param2) {
let localVar = 'I am a local variable';
// 使用模块导出的变量(假设从另一个模块导入)
const { importedVar } = require('./moduleB');
console.log(globalVar); // 全局变量
console.log(param1); // 函数参数
console.log(localVar); // 函数内部声明的局部变量
console.log(importedVar); // 从模块B导入的变量
}
module.exports = {
exampleFunction
};
在这个例子中:
globalVar
是一个全局变量,它在函数外部声明,可以在整个模块中访问。param1
和param2
是exampleFunction
函数的参数,从函数调用时传递。localVar
是在函数内部声明的局部变量,仅在函数作用域内有效。importedVar
是从另一个模块(moduleB.js
)导入的变量。
注意,实际代码中变量的来源可能更加复杂,但以上示例涵盖了Node.js中变量来源的几种主要情况。