Node.js无法创建对象求助:定义后提示author未定义
解决Node.js交互式环境中创建对象的ReferenceError问题
咱们一步步拆解你的问题——你遇到的ReferenceError: author is not defined,本质是对象定义的语法错误导致变量根本没被成功声明。Node的交互式REPL环境在碰到不完整/错误的语法时,会进入多行输入模式(提示符变成...),这时候你的author变量压根没被创建,后面调用自然会报错。
先看你第一次尝试的错误代码
> var author = { firstName: Alex, lastName: Snail, "age: 28", favoritefood: ['lasagna', 'pizza']}; ... author ... author.lastName ... c > author.lastName ReferenceError: author is not defined
这里踩了3个语法坑:
- 字符串值没加引号:
Alex和Snail是字符串,必须用单引号'或双引号"包起来,不然Node会把它们当成变量去查找,找不到直接出问题。 - 键值对格式错误:
"age: 28"这种写法完全不对,正确的应该是age: 28(数字类型)或者age: '28'(字符串类型),不能把整个键值对塞进引号里。 - 因为上面的语法错误,REPL认为你还没写完代码,进入了多行输入模式,你后面输入的
author、author.lastName都是无效输入,最终var author的声明根本没执行,所以调用时提示未定义。
再看第二次尝试的错误
> var author = { firstName: 'Alex', lastName: 'Snail', age: '28', favoriteFood { 'lasagna', 'pizza'} ... author ... > author ReferenceError: author is not defined
这次的问题也很明显:
- 数组和键值对语法错了:
favoriteFood { 'lasagna', 'pizza'}应该写成favoriteFood: ['lasagna', 'pizza']——首先键和值之间要加冒号:,其次数组必须用方括号[]包裹,大括号{}是用来定义对象的。 - 对象没闭合:整个对象定义的末尾少了个
},导致REPL一直等着你补全代码,author变量还是没被成功创建。
修复后的正确代码
把下面这段代码复制到REPL里,回车执行后,就能正常访问author和它的属性了:
var author = { firstName: 'Alex', lastName: 'Snail', age: 28, favoriteFood: ['lasagna', 'pizza'] };
测试一下:
> author.lastName 'Snail' > author.favoriteFood[0] 'lasagna'
小技巧
如果在REPL里不小心进入了多行输入模式(提示符变成...),按Ctrl + C就能退出当前输入,重新开始输入代码。
内容的提问来源于stack exchange,提问作者strasbal
相关产品推荐
相关产品推荐

