我遇到了从udemy nodejs课程运行一些代码的问题。我得到了它的功能(或它应该做什么),但是我不明白为什么greet2函数在事件完成后显示'未定义'。
代码是:
var fs = require('fs');
var greet = fs.readFileSync(__dirname + '/greet.txt', 'utf8');
console.log(greet);
var greet2 = fs.readFile(__dirname, + '/greet.txt', 'utf8', function(err, data) {
console.log(data);
});
console.log('Done!');
我正在控制台中显示:
你好世界! 完成! 未定义
我为什么要为greet2定义未定义?
由于
答案 0 :(得分:2)
变化:
BIO* bio = BIO_new(BIO_s_mem());
int len = BIO_write(bio, pem_key_buffer, pem_key_buffer_len);
EVP_PKEY* evp_key = PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL);
RSA* rsa = EVP_PKEY_get1_RSA(evp_key);
要:
var greet2 = fs.readFile(__dirname, + '/greet.txt', 'utf8', function(err, data) {
console.log(data);
});
(额外的逗号)
您的代码有效,但您传递给var greet2 = fs.readFile(__dirname + '/greet.txt', 'utf8', function(err, data) {
console.log(data);
});
函数的是readFile
,然后__dirname
评估为+'/greet.txt'
,其他参数如NaN
和回调。
答案 1 :(得分:0)
JavaScript函数总是返回一些东西。如果您未在功能中指定要返回的内容,则“未定义”'默认返回。
但不要担心,这不会影响任何事情,你可以忽略它。 它不会造成任何伤害。
答案 2 :(得分:0)
我为什么要为greet2定义未定义?
fs.readFile
是一个异步函数,当它被'初始化'时它没有返回,当你调用它时它不会返回任何值。
您有初始值和异步调用的一个示例是var timeout = setTimeout(callback, mm)
。 tout
会保留一个值,您可以使用该值清除clearTimeout(tout)
。