vs2017编译时js报(ESLint) Expected '!==' and instead saw '!=' 错误的解决方案

本文解决了一个在Visual Studio 2017中遇到的ESLint错误问题,通过在设置中禁用ESLint,成功解决了JavaScript/TypeScript Linting的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近升级了vs2017遇到了这个错误:

查了很多资料终于找到了解决方案:

工具>选项>文本编辑器>JavaScript/TypeScript>Linting>常规>把启用ESLint前面的勾去掉

 

转载于:https://www.cnblogs.com/w3liu/p/9485430.html

<think>我们正在分析用户提供的代码片段中的错误。用户的问题是关于C++代码中`while(n!==0)`的语法错误。 首先,我们观察代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; while(n!==0){ // 这一行有语法错误 if(n%2==0) { cout<<"Alice"<<endl; } else {cout<<"Bob"<<endl;} return 0; } } ``` 错误出现在`while(n!==0)`。在C++中,不等于运算符是`!=`,而不是`!==`。`!==`是JavaScript等其他语言中的不等于运算符,但在C++中并不存在。 因此,正确的写法应该是`while(n != 0)`。 另外,我们注意到代码逻辑上的问题: 1. `return 0;`语句在while循环内部,这意味着循环只会执行一次,然后程序就退出了。这通常不是用户想要的。如果用户希望多次输入,那么应该将`return 0;`移到循环外面。但根据代码,它只读入一个n,然后判断一次就退出了。如果用户希望处理多个输入直到n为0,那么应该将`return 0;`移到循环之后,并且在循环内继续读取下一个n。 2. 另外,如果用户希望当n不为0时循环,那么当n为0时,循环不会执行,程序直接退出。但代码中,当n为0时,循环不执行,然后程序结束,没有输出。这可能是预期的,因为题目可能是要求当n为0时停止。 但是,根据用户代码,循环条件`while(n!==0)`,当n不等于0时执行循环。在循环体内,判断n的奇偶性并输出,然后立即执行`return 0;`,导致程序退出。这显然不是循环处理多个输入的意思。 如果用户希望处理多个输入,直到输入0为止,那么应该将读取输入放在循环内,并且在每次循环中读取新的n。修改后的代码可能如下: ```cpp #include <iostream> using namespace std; int main() { int n; while (cin >> n && n != 0) { // 当成功读取n且n不等于0时循环 if (n % 2 == 0) { cout << "Alice" << endl; } else { cout << "Bob" << endl; } } return 0; } ``` 或者,如果用户希望先读取一个n,然后当n不为0时循环,并在循环体内再次读取n,可以这样: ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; while (n != 0) { if (n % 2 == 0) { cout << "Alice" << endl; } else { cout << "Bob" << endl; } cin >> n; // 读取下一个n } return 0; } ``` 但用户原始代码中,循环体内没有读取下一个n,所以会变成死循环(如果n不等于0的话,会一直输出同样的结果)。而且由于有`return 0;`,循环实际上只执行一次。 所以,用户代码有两个主要问题: 1. 语法错误:使用`!==`而不是`!=`。 2. 逻辑错误:循环体内没有更新n(即没有读取新的输入),而且循环体内有`return 0;`导致只执行一次。 现在,针对用户的问题,我们重点解释语法错误。 在C++中,关系运算符包括: - 等于:`==` - 不等于:`!=` - 大于:`>` - 小于:`<` - 大于等于:`>=` - 小于等于:`<=` 没有`!==`这个运算符。因此,编译器会错,通常错误信息可能是“expected primary-expression before '=' token”或类似信息,因为`!==`被解析为`!`(逻辑非)和`==`(等于)的组合,但这里没有空格,所以编译器会认为这是一个未知的运算符。 因此,将`!==`改为`!=`即可修复语法错误。 另外,用户代码中`while(n!==0)`后面没有分号,这是正确的,因为循环条件后面直接跟循环体。 总结回答: 用户代码中的语法错误在于使用了`!==`运算符,C++中不等于运算符是`!=`。修改为`while(n != 0)`即可。 同时,我们注意到代码逻辑上可能存在问题,比如循环体内没有更新变量n且立即返回,这会导致循环只执行一次(如果n不等于0)或者不执行(如果n等于0)。但用户的问题主要是语法错误,所以先解决语法问题。 如果用户希望连续处理输入直到0,需要调整循环结构。</think>### C++ 中 `while(n!==0)` 的语法错误分析 您的代码中存在一个关键语法错误:**C++ 不支持 `!==` 运算符**。这是最常见的错误原因,具体分析如下: #### 错误原因详解 1. **无效的运算符** C++ 中**不等于运算符是 `!=`**(单个等号),而 `!==` 是 JavaScript/PHP 等语言的运算符。编译器会将 `!==` 识别为两个独立符号: - `!`(逻辑非运算符) - `==`(相等运算符) 导致语法解析失败。 2. **编译器错示例** 实际编译时会抛出类似错误: ```bash error: expected primary-expression before '=' token while(n!==0){ ^ ``` #### 修复方案 将 `!==` 替换为标准的 C++ 不等于运算符 `!=`: ```cpp while(n != 0) { // 正确写法 // 循环体 } ``` #### 额外问题修正 您的代码还存在其他需要调整的问题: 1. **循环逻辑错误** `return 0;` 在循环内部会导致程序立即退出,应移至循环外: ```cpp while(n != 0) { if(n%2==0) cout << "Alice" << endl; else cout << "Bob" << endl; cin >> n; // 需添加此行以持续读取输入 } return 0; // 移至此处 ``` 2. **输入处理优化** 建议使用更健壮的循环条件: ```cpp while(cin >> n && n != 0) { // 处理逻辑 } ``` #### 正确完整代码 ```cpp #include <iostream> using namespace std; int main() { int n; while(cin >> n && n != 0) { // 修复运算符+优化输入 if(n % 2 == 0) cout << "Alice" << endl; else cout << "Bob" << endl; } return 0; } ``` > **关键记忆点**:C++ 比较运算符使用 `==`(相等)和 `!=`(不等),没有三字符运算符如 `!==` 或 `===`。这种差异是跨语言编程时的常见错误源[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值