【前言】
本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙这个平台做整理+再复习。
本系列标题一律以【】标示该篇文章主要涉及的内容,例如【JavaScript】、【Vue】等等。
若内容有误,还麻烦各路大神不吝於点出问题,感激不敬。
今天的主题比较小,算是一个个人学习过程中误打误撞出现的状况
在JavaScript的世界中,当我们使用比较运算子时,会回传一个结果
console.log(9 > 12); //false
在这个案例中回传false,9没有大於12,这非常好理解
但在JavaScript的世界中,存在所谓的自动转型
当型别不同的东西被放在比较运算子两边时,就会出现一些奇奇怪怪的情况
例如这个案例中,true被自动转型成1,因为1 > 0,回传true
console.log(true > 0); //true
因此我在学习的过程中通常就会去记一些重点案例,例如true会被转型成1,false会转型成0
一次偶然的情况下我遇到了这样的情况:
console.log(9 > "12"); //false
console.log("9" > "12"); //true
这就让我深感困惑了
第一行很好理解,字串"12"被转型成数字12,因此回传false
但第二行就很让人困惑了,原先以为会是两边都被转型成数字,然後因为9小於12所以回传false
但结果并非如此
後来经过查找资料,终於发现原因
因为运算子在采用 > 或 < 比较字串时,运算元会透过 Unicode 编码的值来比较
所以才会有这样的情况发生
因为"9"的Unicode 编码值是57
而"12"的Unicode 编码值49
所以会变成57 > 49,自然就会回传true了
>>: 14. STM32-透过SPI驱动MCP2515实现CAN(下)
(专案有很多种,但无关研发、纯建置或事务性的专案并不会在我讨论的范围中出现。) 个人经验是会用二分法...
Form 一直都是网页中重要的功能,今天就让我们来了解在 React 处理 Form 该注意的事情吧...
表单长好之後准备来新增跟查询资料啦。 Laravel 原生有 DB 类别来帮助查询跟新增资料,像是 ...
这一个章节节我们要来介绍复合查询,当单一的查询子句无法完成需求时,为了应付这种高级查询需求,所以就产...
终於进到 R-type 指令了! 指令实作已经有固定流程了,很单纯, 另外花了一点时间修改昨天的 E...