首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我在这个三元赋值中总是得到null?

在这个三元赋值中总是得到null的原因可能有以下几种情况:

  1. 条件判断为false:在三元赋值中,首先会对条件进行判断,如果条件为false,则会返回第三个操作数的值。因此,如果条件判断为false,那么你将得到null作为结果。
  2. 第二个操作数为null:如果第二个操作数为null,那么无论条件判断的结果如何,你都会得到null作为结果。
  3. 数据类型不匹配:在三元赋值中,第二个和第三个操作数的数据类型必须一致,否则会导致类型不匹配的错误。如果第二个或第三个操作数的数据类型与期望的类型不匹配,那么你可能会得到null作为结果。

为了解决这个问题,你可以检查以下几个方面:

  1. 确保条件判断的逻辑正确,并且符合你的预期。
  2. 检查第二个操作数是否为null,如果是null,你可以考虑使用其他非null的值作为替代。
  3. 确保第二个和第三个操作数的数据类型一致,如果不一致,你可以进行类型转换或者使用其他合适的数据类型。

总结起来,要解决在三元赋值中得到null的问题,你需要仔细检查条件判断、操作数的值和数据类型是否符合你的预期,并进行相应的调整和修正。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 Python、Go 和 Rust 都不支持三元运算符?

在开篇之前,我再声明一下:就像“Python为什么”系列的大部分文章一样,本文关注的仅是一个很小的语法点,但它并不是“茴香豆有几种写法”那种毫无意义的话题。...但是这种写法在 Python 中的行为跟有些语言并不一样,使用不严谨的话,可能会酿成 Bug! 看看下面的两个例子,你觉得它们会得到什么结果呢?...但在查阅资料后,我发现它也有一段特殊的故事,非常有意思:在 2011 年 6 月时,Rust 曾经引入过三元运算符(#565),然而半年后,设计者意识到这个特性是多余的,因此又把它移除了(#1698、#4632...为什么三元运算符在 Rust 是多余的呢?...: b 表示:如果 a 不为 null,则赋值给 result ;否则将 b 赋给 result) 由于有这种语言设计层面的区别,因此在面对“是否要支持三元运算符”这个问题时,Rust 和 Python

4.3K10

如何让前端项目代码变得简洁优雅?

目录 前言 实战案例 变量解构赋值和扩展运算符的运用 巧用三元运算符替代简单的条件判断 善用可选链运算符、空值合并运算符做空值判断 数组的遍历 结语 前言 你好,我是喵喵侠。...在日常开发中,难免会见到一些不太好的代码,看的人脑壳疼。...变量解构赋值和扩展运算符的运用 变量的取值和赋值,这个操作想必我们每天都在做。...user.isAdmin 为什么不要三元呢,因为三元判断的条件本身就是一个布尔值,而这里需要的返回正好是布尔值,所以判断显得多此一举。如果user.isAdmin不是布尔值是字符串,用两个感叹号!!...在处理可能为空的变量时,按照传统的写法,可能会显得冗长且重复,就像下面这样 // bad let value; if (inputValue !== null && inputValue !

19020
  • javaScript的基本语法大全

    var a = 1; 上面的代码先声明变量a,然后在变量a与数值1之间建立引用关系,称为将数值1“赋值”给变量a。以后,引用变量名a就会得到数值1。最前面的var,是变量声明命令。...else代码块总是与离自己最近的那个if语句配对。 ? 上面代码不会有任何输出,else代码块不会得到执行,因为它跟着的是最近的那个if语句,相当于下面这样。 ?...这个三元运算符可以被视为if...else...的简写形式,因此可以用于多种场合。 ? 上面代码利用三元运算符,输出相应的提示。...结论: 上面的javaScript循环,switch语句,三元运算符都是引用java的规则的,我么使用这些语法时完全可以套用java的用法。...标签的用法有很多,javaScript还有许多循环,有些循环总是会把它全部遍历一遍,无法中途停止,如果你想它中途停止,这个时候就该使用到标签了。

    1K20

    三元表达式引发的空指针问题

    而且,这个和你使用的 JDK 版本是无关的,我在 JDK 6、JDK 8 和 JDK 14 上做了测试,均会抛出 NPE。...但是,并不是所有人都熟知这个规则,所以在实际应用中,还会出现以下几种定义方式: boolean x4 = flag ?...在以上 6 种情况中,如果是涉及到自动拆箱的,一旦包装类的值为 null,即 null.booleanValue(),就必然会发生 NPE(装箱不会,因为装箱是 Boolean.valueOf(null...就需要对对象进行拆箱操作,由于该对象为 null,所以在拆箱过程中调用 null.booleanValue() 的时候就报了 NPE。...而 x4 是因为三目运算符运算结束后根据规则他得到的是一个对象类型,但是在给变量赋值过程中进行自动拆箱所导致的 NPE。

    23930

    8. Groovy 运算符 条件运算符,对象运算符学习

    PS:在Groovy中判断字符串是否为空可以直接使用这个条件判断符来进行判断。如果对象是null 也是可以判断的。...zinyan) //输出结果为true 2.1 三元运算符 在java中的三元运算符 表达式 ? 结果值1:结果值2在Groovy当然也是一样支持的。...我在Windows系统中,通过Visulal Studio 工具,添加Groovy插件+COde Runner插件(这个插件能够运行C,C++,Java,JS,PHP,Python,Perl,Ruby,...很正常因为我没有给name属性复赋值 // //但是如果我们person对象是通过外部传入进来的,我们就需要对他验证是否为空 Zinyan person= null...而是直接给name赋值为null println(name) //输出 null } } PS:现在各种高级语言都有类似的机制,例如Kotlin中也有。

    2.1K10

    4.Swift教程翻译系列——Swift基本运算符

    Swift支持C中得大部分运算符,而且增加了一些增强的特性来降低代码中的错误。赋值预算符=不会返回值。这样就避免了在应该使用比較运算符==的地方误用=。...两个字符,或者一个字符跟一个字符串,都能相加得到字符串。(以下样例里面字符用的是表情符,不windows应该是不支持吧,我猜的。)...也就解释了为什么a跟b的值都是1了。 可是let c = a++是先返回a的值然后才给a加1的。所以说这个完了以后a是2,而c等于1。...这里说建议尽量都是++i和–i的形式,我在JAVA里面都是写i++啊。 一元负运算符 数字的符号能够用-来改变。...由于在if里面根本不须要去改变rowHeight的值。 三元运算符提供了一种高效的方式来表达两选一的情况。 可是使用三元运算符的时候也要注意,假设太简洁了可能会减少代码的可读性。

    74610

    107.精读《Optional chaining》

    [expr] 是 Optional Chaning,亦或这是一个普通的三元运算语句。 可见,要支持 ?. 这个看似简单的语法,在整个 JS 语法体系中要考虑的边界情况很多。 即便是 ?....语句时,一定要反射性的思考一下,这个语句会触发 “短路”。 长“短路” Optional chaining 在 JS 的规范中,作用域仅限于调用处。看下面的例子: a?....正因为 Optional chaining 在 JS 语法中仅对当前位置起保护作用,因此一个调用语句中允许出现多个 ?. 调用: a?.b[3].c?.(x).d a == null ?...b a == null ? true : delete a.b 这样不论 b 是否存在,得到的都是 b 删除成功的信号(返回值 true)。...原因是与三元运算符冲突了,思考下面的用法: 1.?foo : bar 在 js 中,1. 等价于 1,那么这就是一个标准的三元运算表达式,因此 .? 语法会产生歧义,只能选择 ?.。

    39330

    Java操作符真的简单到易如反掌?

    (告诉我,为什么要用三个句号。。。而不是三个问号???)鉴于此,我在写这篇《Java操作符真的简单到易如反掌?》时感到惶恐不安,头顶三个大字几乎压得我喘不过气来,哪三个字呢?...一、“=”号的宣言:我不是判官,我只是用来赋值的 记得10年刚参加工作的时候,我的同事小王就因为一行简单的代码被领导骂的狗血喷头。当时小王被骂的那个惨啊,至今我还历历在目。究竟是一行什么代码呢?...例如,可以将一个字符串赋值给一个变量: String cmower = "沉默王二,一个不止写程序的全栈工程师"; 关键点: 1)得到你的人却得不到你的心;来看这么一段代码: int i = 520,...为什么会这样呢? 因为后缀递增会先生成值,再执行运算;也就是p++这个表达式的结果还是p。但前缀递增会先执行运算,再生成值;也就是++p这个表达式的结果是p+1。 那以上代码正确的写法是什么呢?...发现缓存中存在127这个数了,就直接取出来赋值给r,所以此时的q == r,也就是说System.out.println(q == r)此时输出true。

    49520

    处理 JS中 undefined 的 7 个技巧

    变量在未初始化状态中越少越好。 理想情况下,你可以在声明const myVariable ='Initial value'之后立即指定一个值,但这并不总是可行的。...为什么修改后的版本优于初始版本?...Welcome"', { skipIfQuoted: true }); // => '"Welcome"' const {char = '", skipifquote = true} = config解构赋值在一行中从...我喜欢这样:quote()缩短了一行。 ={}在解构赋值的右侧,确保在完全没有指定第二个参数的情况下使用空对象。 对象解构是一个强大的功能,可以有效地处理从对象中提取属性。...JS 中,可能会遇到所谓的稀疏数组。这些数组是有间隙的数组,也就是说,在某些索引中,没有定义元素。 当在稀疏数组中访问间隙(也称为空槽)时,也会得到一个undefined。

    5.2K20

    7个处理JavaScript值为undefined的技巧

    我刚刚开始学习JavaScript时,大约是八年前,当时我对于undefined 和 null 比较困惑 ,因为他们都表示空值。 他们有什么明确的区别吗?...变量在未初始化状态下存在的越少越好。理想情况下,您可以在声明`const myvariable ='初始值'后立即分配一个值,但这并非总是可行。...你可以在函数范围的末尾声明一个var变量,但是它仍然可以在声明之前被访问:并且你会得到一个undefined。 function bigFunction() { // code......我喜欢这样:quote()变成一行更短。在解构赋值右侧的= {}确保在第二个参数没有在quote('Sunny day')`中被指定时使用空对象。...这些是有间隙的数组,即在某些索引中没有定义元素。 当在一个稀疏数组中访问一个间隙(又名空槽)时,你也会得到一个'undefined`。

    3.4K31

    7个处理JavaScript值为undefined的技巧

    变量在未初始化状态下存在的越少越好。理想情况下,您可以在声明`const myvariable ='初始值'后立即分配一个值,但这并非总是可行。...你可以在函数范围的末尾声明一个var变量,但是它仍然可以在声明之前被访问:并且你会得到一个undefined。 function bigFunction() { // code......`config`对象中提取属性`char`和`skipIfQuoted`如果某些属性在`config`对象中不可用, 解构赋值将默认值设置为:''''''为'char','false'为'skipIfQuoted...我喜欢这样:quote()变成一行更短。在解构赋值右侧的= {}确保在第二个参数没有在quote('Sunny day')`中被指定时使用空对象。...这些是有间隙的数组,即在某些索引中没有定义元素。 当在一个稀疏数组中访问一个间隙(又名空槽)时,你也会得到一个'undefined`。

    6.1K30

    c#运算符

    在C#中,下述语句会产生一个编译错误:  if (x = 3)  习 惯使用宏字符&来连接字符串的VB程序员必须改变这个习惯。在C#中,使用加号+连接字符串,而&表示两个不同整数值的按位AND运算。...5.1.1 运算符的简化操作  表5-2列出了C#中的全部简化赋值运算符。  ...CLR如何处理这个溢出取决于许多方面,包括编译器选项,所以无论溢出有什么样的风险,都需要用某种方式确保得到我们希望的结果。  为此,C#提供了checked和 unchecked运算符。...在使用反射动态查找对象的信息时,这个运算符是很有效的。第11章将介绍反射。  5.1.8 可空类型和运算符  如果在程序中使用可空类型,就必须考虑null值在与各种运算符一起使用时的影响。...:       赋值运算符       =  += –=  *=  /=  %=  &=  |=  ^=  >=  >>>=  注意:  在复杂的表达式中,应避免利用运算符优先级来生成正确的结果

    1.3K50

    读Zepto源码之属性操作

    先将这个复杂的三元表达式拆解下: value ? 相当复杂的表达式返回的值 : value 值存在时,就进行相当复杂的三元表达式运算,否则返回原值。...html 方法差不多,但是在 newText == null 时,赋值为 '' ,否则,转换成字符串。...这个转换我有点不太明白, 赋值给 textContent 时,会自动转换成字符串,为什么要自己转换一次呢?...还有,textContent 直接赋值为 null 或者 undefined ,也会自动转换为 '' ,为什么还要自己转换一次呢?...为什么要用严格等 null 来作为判断呢?这个我也不太明白,因为在获取值时,attr 方法对不存在的属性返回值为 undefined ,用 !== undefined 判断会不会更好点呢?

    1.8K00

    JavaScript

    (“、\、换行等....) 3.字符串不可变 在内存中不会立刻消失,只能二次赋值,原有的字符在一定时间 内被 垃圾回收器回收。...变量 第一个逻辑非操作会基于无论什么操作数返回一个与之相反的布尔值 第二个逻辑非操作则对该布尔值求反 于是就得到了这个值真正对应的布尔值 第5章 操作符 主要研究操作符的种类以及优先级。 案例学习。...: (三元运算) 10 =、+=、-=、*=、/=、%= (赋值运算) 5.3 &&和||运算 5.3.1 &&链接两个boolean类型,有一个是false结果就是false。...1.1.2 为什么要用函数 因为一部分代码使用次数可能会很多,所以封装起来,需要的时候调用就可以了。 案例:求和;(总是求和) 1.2 函数的定义 关键字function。...为什么要设置参数?为了增强函数的功能性,和程序员的交互性,和函数的可拓展行。所以我们增加了参数这个概念。 1.3.1 形参 形式上参与运算的变量,无实际值,为实参占位置,就像一`个躯壳一样。

    1.2K60

    关于php运算符优先级的几道题

    '我' : $x == 1 ? '你' : '它'; //你 掉坑里的同学可能认为结果是我, 因为$x确实等于2 根据三元运算符的规则 ?前为true就输出我了....这里的知识点在于运算符优先级以及三元运算符左结合的特性,其实真正的执行流程是这样的: $x = 2;//将2赋值给变量x 没啥说的 echo $x == 2 ? '我' : $x == 1 ?...'你' : '它'; //你 //因为 == 的优先级比三元运算符高 所以转换成如下代码 #echo true ? '我' : false ?...'你' : '它'; //由于三元运算符左结合的特性 所以如上代码等效于 #echo (true ? '我' : false) ?...被坑的同学相信答案大概有这么几种(4,6),(2,6) $b基本没啥争议,关键是$a到底是神马情况,来我们来讲解一下这个坑。

    99560

    Java条件运算符:从基础到高级应用,有两下子

    在这个例子中,条件运算符判断a是否大于b,如果为真,则将max赋值为a,否则将max赋值为b。同样的原理,可以找出a和b的最小值,判断a是否小于b,如果为真,则将min赋值为a,否则将min赋值为b。...num1 : num2这个表达式的意思是,如果num1大于num2,返回num1,否则返回num2。这个表达式将最大值存储在max变量中。接下来,再使用三元运算符:(num1 这个表达式的意思是,如果num1小于num2,返回num1,否则返回num2。这个表达式将最小值存储在min变量中。...因此,整段代码的作用是找出两个数中的最大值和最小值,并将它们分别存储在max和min变量中。场景二:检查空值String result = (value != null) ?...可以在单行中完成条件判断和赋值操作,提高了编码效率。缺点:当条件判断较复杂时,不宜过度使用条件运算符,可读性会降低。不支持多个条件的判断,适用于简单的条件判断场景。

    23521

    Case Study:读取设备的温度值?

    当然,实际测试过程中也遇到某些高版本的设备无法直接访问 /sys/class/thermal 这个目录,但它的子目录和文件是可以访问的,因此,如果大家测试过程中遇到 thermalDir.listFiles...我明明就只是想要读取文件的一行,结果前前后后写了那么多的模板代码 我明明就只是想要初始化一下 `temperature`,我们当然可以在最后用三元表达式来简化这一个过程,但如果条件更复杂呢?...显然,作为优秀的程序员,我们都具有“懒惰”的优秀品质,除非必要,我为什么要写这个烦人的东西?...它确实很烦人,至少从 Java 代码的版本来看,我不仅需要在 count>0 的情形下为它赋值,而且还得写个 else,我为什么不能在声明它的时候直接给他初始化一个变量呢?...至于 final 在并发时的语义问题,相比之下比较晦涩,我就不细说了,大家只需要知道 final 变量比 non-final 变量在并发环境下更安全就是了。

    1.2K10
    领券