gpt4 book ai didi

node.js - 有人可以解释这个错误 : expression statement is not assignment or call

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:46 44 4
gpt4 key购买 nike

我有这两 block 代码。

socket.on('chatMessage', function(message) {
message.type = 'message';
message.created = Date.now();
message.username : socket.request.user.username;
});

socket.on('disconnect', function() {
io.emit('chatMessage', {
type: 'status',
text: socket.request.user.username + ' left the conversation.',
created: Date.now(),
username: socket.request.user.username,
});
});

如果我将 := 更改为其他,Webstorm 会报错。Expression statement is not assignment or call. 谁能解释为什么有时候是这样的?提前致谢。

最佳答案

您的第一个代码块是定义一个功能 block 。您的第二个代码块正在定义一个对象定义。每个允许使用不同的语法,您必须使用适当的语法来匹配上下文。

您的第一个代码块只是在一个功能 block 中执行一系列语句。此行末尾的 {:

socket.on('chatMessage', function(message) {

定义功能 block 的开始。因此,Javascript 正在寻找在该上下文中合法的语句。每行代码都需要一个合法的 Javascript 语句。而且,

message.username : socket.request.user.username;

在这种情况下不是法律声明。如果您尝试为 message.username 赋值,则其有效语法为:

message.username = socket.request.user.username;

在您的第二个 block 中,您正处于对象定义的中间。此行末尾的 {:

io.emit('chatMessage', {

开始对象定义。因此,在该对象上定义属性的合法语法如下所示:

username: socket.request.user.username,

所以,这里有两个关键:

  1. 识别 { 何时表示功能 block 的开始与对象定义的开始。您的第一个代码块开始一个函数体,第二个开始一个对象定义。

  2. 了解功能 block 中允许的语法与对象定义中允许的语法之间的区别。

关于node.js - 有人可以解释这个错误 : expression statement is not assignment or call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42114991/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com