gpt4 book ai didi

javascript - 理解连接字符串的三元运算符

转载 作者:可可西里 更新时间:2023-11-01 00:58:16 24 4
gpt4 key购买 nike

我正在使用 JavaScript 示例,但是,这并不意味着只有 JavaScript 问题,因为结果对于 PHP 是相同的,而且我希望使用多种语言。我已经通过使用大量括号“处理”了我缺乏理解的问题,但是,现在是处理它的时候了。

给出下面的脚本(以及 https://jsfiddle.net/5z4paegb/ )..

function testTernary(isjane) {
var str = 'hello ' + isjane ? 'Jane' : 'Mary';
console.log(isjane, str);
}
testTernary(true);
testTernary(false);
testTernary(1);
testTernary(0);
testTernary(null);

我本以为:

true hello Jane
false hello Mary
1 hello Jane
0 hello Mary
null hello Mary

但是我得到:

true Jane
false Jane
1 Jane
0 Jane
null Jane

最佳答案

根据 JavaScript's precedence table ,

'hello ' + isjane ? 'Jane' : 'Mary';

相当于:

('hello ' + isjane) ? 'Jane' : 'Mary';

这是因为 + 运算符的优先级高于 ?: 三元运算符。 (?: 运算符实际上在 JavaScript 的优先级表中非常低,仅高于赋值操作、yield...,.)

您可以通过以下方式获得您想要的效果:

'hello ' + (isjane ? 'Jane' : 'Mary');

一般来说,在处理三元运算符时,最好在三元运算符及其操作数两边加上括号,以便清楚地表明什么是条件运算的一部分。

PHP's operator precedence table也是如此

关于javascript - 理解连接字符串的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027021/

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