Javascript 为什么我必须将部分条件放在括号中以防止语法错误?

Javascript 为什么我必须将部分条件放在括号中以防止语法错误?,javascript,syntax-error,selector,Javascript,Syntax Error,Selector,这是我的密码: if(typeof selector = "string") { 当我运行代码时,我遇到了一个语法错误,它是:SyntaxError:Expected token')为了防止出现这种情况,我将选择器的typeof部分放在括号中。这是我的新代码: if((typeof selector) = "string") { 没有语法错误 为什么我必须把我的条件的一部分放在括号里以防止这个语法错误 typeof selector == "string" 使用== 或者练习使用==,这是

这是我的密码:

if(typeof selector = "string") {
当我运行代码时,我遇到了一个语法错误,它是:
SyntaxError:Expected token')
为了防止出现这种情况,我将选择器的
typeof
部分放在括号中。这是我的新代码:

if((typeof selector) = "string") {
没有语法错误

为什么我必须把我的条件的一部分放在括号里以防止这个语法错误

typeof selector == "string"
使用
==

或者练习使用
==
,这是避免混淆JS中错误值的最佳方法

使用
==


或者练习使用
==
,这是避免混淆JS中的falsy值的最佳方法。这是因为您使用的是单个等号

if (typeof selector = "string") {
这是一项任务,而不是

if (typeof selector === "string") {
这是相等运算符。通常使用===比使用==更好,因为这是更“类型安全”的比较


(作为旁注,我很好奇为什么第二个示例没有抛出异常,所以在node.js控制台中尝试了它。
typeof selector=“string”
(typeof selector)=“string”
在该环境中抛出异常-我猜它依赖于浏览器)

这是因为您使用的是一个等号

if (typeof selector = "string") {
这是一项任务,而不是

if (typeof selector === "string") {
这是相等运算符。通常使用===比使用==更好,因为这是更“类型安全”的比较

(作为旁注,我很好奇为什么第二个示例没有抛出异常,所以在node.js控制台中尝试了它。
typeof selector=“string”
(typeof selector)=“string”
都会在该环境中抛出异常,我想这取决于浏览器)