- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在学习 nodejs(我喜欢它!)。我试图弄清楚如何为 console.log
设置更短的别名,我发现我可以使用 var cout=console.log
并使用 cout(' [string]')
从那时起。然后,当我想使用 process.stdout.write
时,我也尝试为它创建一个简短的别名,使用 var out=process.stdout.write
。但是当我使用 out('[string]')
时,出现以下错误:
_stream_writable.js:220 var state = this._writableState; ^ TypeError: Cannot read property '_writableState' of undefined
at Writable.write (_stream_writable.js:220:19) at Socket.write (net.js:670:40) at Object. (/home/shayan/Desktop/nodejs/server.js:12:1)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.runMain (module.js:605:10) at run (bootstrap_node.js:423:7)
这里有什么问题?如何正确地为 process.stdout.write
创建一个简短的别名?谢谢
最佳答案
你不应该做这种“短别名”。它非常困惑,阅读您的代码的人不会理解为什么您使用随机函数名称而不是 console.log
。但是,如果您真的想创建函数别名,请考虑使用 function
:
function out(text) {
// ^ ^- argument accepted by the function
// |------ the function name
process.stdout.write(text)
// ^- pass the argument you accepted in your new function to the long function
}
我添加了一些解释,以防您不知道某个函数的工作原理,您可以安全地删除它。
编辑:它不起作用的原因在于 Node.JS 的源代码。您返回的堆栈跟踪指向 this行:
Writable.prototype.write = function(chunk, encoding, cb) {
var state = this._writableState;
// ...
}
它尝试从 this
引用一个名为 _writableState
的变量。如所写here :
Inside a function, the value of
this
depends on how the function is called.
这意味着,当您调用 process.stdout.write
时,this
指的是 process.stdout
,但是它是未定义的,当您从你的别名中调用它。因此你会得到一个 Cannot read property '_writableState' of undefined
异常(因为 undefined
不包含那个变量,这对 write
函数很重要执行)。
关于javascript - Node : short alias for process. stdout.write,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43362222/
C# 程序: short a, b; a = 10; b = 10; a = a + b; // Error : Cannot implicitly convert type 'int' to 'sh
这个问题已经有答案了: Promotion in Java? (5 个回答) 已关闭10 年前。 我有三个短变量。当我将两个相加并将结果分配给第三个时,Eclipse 告诉我需要将其转换为 Short
我正在开展一个项目,我需要获取一系列带符号的 16 位整数、负值和正值,并将它们发送到函数以在单元测试期间进行分析。 由于不同的原因,该函数仅采用无符号 16 位整数数组,因此我需要将有符号整数存储在
这个问题在这里已经有了答案: Implicit type promotion rules (4 个答案) 关闭 3 年前。 有如下代码: short a = 5; short b = 15; sho
我有以下代码: var v = [0xFF, 0xFF]; alert((v[0]> 16); 16位左移将所有位向左移动;算术 16 位右移在移位时处理符号。 (Javascript 使用 32 位
我正在尝试尽可能多地挤出我的内存。我有一个 4.9999995e13 整数矩阵,但它们只需要为真或假 - 基本上我只需要为这些整数中的每一个存储一位。 我知道 C 中没有单个位类型(也许有人可以向我解
这个问题已经有答案了: Different between parseInt() and valueOf() in java? (11 个回答) 已关闭 5 年前。 我最近偶然发现了another q
当我将相同的值分配给有符号和无符号的 short 并进行比较时,它失败了,但它适用于 int。除非我强制转换一个或另一个使它们成为相同的类型,否则比较不起作用。 #include int main()
所以我试图解释以下输出: short int v = -12345; unsigned short uv = (unsigned short) v; printf("v = %d, uv = %u\n
当我将相同的值分配给有符号和无符号的 short 并进行比较时,它失败了,但它适用于 int。除非我强制转换一个或另一个使它们成为相同的类型,否则比较不起作用。 #include int main()
这个问题在这里已经有了答案: What is the 'short' data type in C? (1 个回答) 关闭 7 年前。 将变量声明为 short int 和 short 有什么区别?
C 中的 short int 包含 16 位,第一位表示该值是负数还是正数。我有一个 C 程序如下: int main() { short int v; unsigned short
Short.parseShort(String s, int radix) 存在,Integer.parseInt(String s, int radix) 和 Long.parseLong(Stri
我想我可以从 this question 推断出来但我不能 我当然可以 short[] shortarray = {0,1,2}; List shortList = new ArrayList();
这个问题在这里已经有了答案: char and the usual arithmetic conversion rules (5 个答案) 关闭 6 年前。 假设 int 是 16 位类型,以防止从
到目前为止我已经试过了,但我仍然在下面的代码中遇到错误: #include typedef unsigned short unichar; typedef const unichar unimap_t
unsigned short int 和 c 中的 unsigned short decleration 之间有区别吗?如果有,那是什么?我尝试在网上查找,但找不到任何有值(value)的东西。 un
我有数据库,由于与另一位开发人员混淆,我需要在一个表中更改列的值。我有一个名为 credits 的表和一个名为 credit_type 的列。 credit_type 有 2 个值 long 和 sh
我在 JNI hell 中进行类型转换: 这是一般的流程: 读取一个文件,它返回一个一维 float 组。 转换这些floats[] 到 shorts[](*4095,我想要一个12位数字) 将这些短
我正在尝试优化两个 c 样式数组的点积,这些数组的大小为 contant 和 small,类型为 short。 我已经阅读了一些关于 SIMD 内在函数的文档以及许多关于使用此内在函数进行点积优化的博
我是一名优秀的程序员,十分优秀!