jsFiddle中逻辑运算符中的圆括号

Syd*_*ney 3 javascript conditional-statements jsfiddle

不确定这个问题是因为jsFiddle中的错误还是我对javascript圆括号的误解.我有这个代码:

let x = 5
(x > 0) && console.log('hello')
Run Code Online (Sandbox Code Playgroud)

这不起作用.但是,以下没有括号工作.

x > 0 && console.log('hello')
Run Code Online (Sandbox Code Playgroud)

我的印象是我可以在条件下使用圆括号将事物分组在一起.我不知道为什么我的第一行代码不起作用.这是我对圆括号的误解吗?

我实际上是想在这个jsFiddle代码中教别人一个更高级的例子.https://jsfiddle.net/x616atk0/

Mar*_*nde 7

它不起作用,因为你丢失了分号 let x = 5

代码应该是:

let x = 5;
(x > 0) && console.log('hello');
Run Code Online (Sandbox Code Playgroud)

否则,您的代码可以转换为:

let x = 5(x > 0) && console.log('hello');
Run Code Online (Sandbox Code Playgroud)

当然,5这不是一个函数,并且x(您在表达式中使用的,其中评估值将作为参数传递)尚未定义.

该错误具有误导性,因为您使用的是您定义为参数的相同变量.如果你有

let x = 5
(5 > 0) && console.log('hello');
Run Code Online (Sandbox Code Playgroud)

你会得到:TypeError: 5 is not a function这正是问题所在.


这就是分号很重要的原因!

您是否建议在JavaScript中的每个语句后使用分号?

是的,我绝对做到了