jsFiddle 逻辑运算符中的圆括号
Round bracket in logical operator in jsFiddle
不确定这个问题是因为jsFiddle中的错误还是我对javascript的圆括号的误解。我有这个代码:
let x = 5
(x > 0) && console.log('hello')
这行不通。但是,以下不带括号的内容有效。
x > 0 && console.log('hello')
我的印象是我可以在条件中使用圆括号将事物组合在一起。我不知道为什么我的第一行代码不起作用。是我对圆括号的误解吗?
我实际上是想教别人这个 jsFiddle 代码中更高级的示例。 https://jsfiddle.net/x616atk0/
它不起作用,因为你在 let x = 5
之后少了一个分号
代码应该是:
let x = 5;
(x > 0) && console.log('hello');
否则,您的代码可以翻译成这样:
let x = 5(x > 0) && console.log('hello');
当然 5
不是函数,并且 x
(您在表达式中使用它,计算值将作为参数传递)尚未定义。
该错误具有误导性,因为您使用的变量与定义为参数的变量相同。如果你有
let x = 5
(5 > 0) && console.log('hello');
你会得到:TypeError: 5 is not a function
这正是问题所在。
这就是为什么分号很重要!
Do you recommend using semicolons after every statement in JavaScript?
是的,我绝对会
您忘记在行尾添加分号,这导致了错误。当您这样做时:
let x = 5
let y = 4
x > 0 && console.log('code 4')
(x > 0) && (y > 0) && console.log('code 5');
因为第三行以 )
结尾,解释器认为您使用 (x > 0)
参数调用 console.log
的结果:
let x = 5
let y = 4
x > 0 && console.log('code 4')(x > 0) && (y > 0) && console.log('code 5');
但是console.log
returns undefined
: 它return不是一个函数,所以你当然不能把它当作一个函数来调用。
如果您还在学习这门语言,请始终使用分号,否则您很容易被绊倒。
此外,您的做法不是一个好的做事方式;虽然这是一个有趣的语言怪癖,但最好使用 if
或三元运算符显式测试条件,而不是为此使用 &&
。
不确定这个问题是因为jsFiddle中的错误还是我对javascript的圆括号的误解。我有这个代码:
let x = 5
(x > 0) && console.log('hello')
这行不通。但是,以下不带括号的内容有效。
x > 0 && console.log('hello')
我的印象是我可以在条件中使用圆括号将事物组合在一起。我不知道为什么我的第一行代码不起作用。是我对圆括号的误解吗?
我实际上是想教别人这个 jsFiddle 代码中更高级的示例。 https://jsfiddle.net/x616atk0/
它不起作用,因为你在 let x = 5
代码应该是:
let x = 5;
(x > 0) && console.log('hello');
否则,您的代码可以翻译成这样:
let x = 5(x > 0) && console.log('hello');
当然 5
不是函数,并且 x
(您在表达式中使用它,计算值将作为参数传递)尚未定义。
该错误具有误导性,因为您使用的变量与定义为参数的变量相同。如果你有
let x = 5
(5 > 0) && console.log('hello');
你会得到:TypeError: 5 is not a function
这正是问题所在。
这就是为什么分号很重要!
Do you recommend using semicolons after every statement in JavaScript?
是的,我绝对会
您忘记在行尾添加分号,这导致了错误。当您这样做时:
let x = 5
let y = 4
x > 0 && console.log('code 4')
(x > 0) && (y > 0) && console.log('code 5');
因为第三行以 )
结尾,解释器认为您使用 (x > 0)
参数调用 console.log
的结果:
let x = 5
let y = 4
x > 0 && console.log('code 4')(x > 0) && (y > 0) && console.log('code 5');
但是console.log
returns undefined
: 它return不是一个函数,所以你当然不能把它当作一个函数来调用。
如果您还在学习这门语言,请始终使用分号,否则您很容易被绊倒。
此外,您的做法不是一个好的做事方式;虽然这是一个有趣的语言怪癖,但最好使用 if
或三元运算符显式测试条件,而不是为此使用 &&
。