1.null与undefined比较
-
undefined与null的区别,两个都表示什么都没有
-
null == undefined
:成立,他们的值都是空 -
null === undefined
:不成立,他们的值相等但是数据类型不同
<script>
/*JS总共有六种数据类型,其中五种基本数据类型,一种复杂数据类型
*(1)null与undefined有什么区别
* null == undefined 成立
* null === undefined 不成立
*/
//1.null与undefined的区别:需要记忆
console.log ( null == undefined );//true 他们的值都是空
console.log ( null === undefined );//false 他们的值相等 但是数据类型不同
</script>
2.NaN与isNaN
-
1.NaN:Not a Number 不是一个数字
-
(1)NaN是number数据类型中一个特殊的数值,是数学计算错误得到的一个结果
-
例如:
'张三' - 100
,在数学上这是一种错误的计算,它的结果就是NaN
-
-
(2)NaN与任何数字都不等,包含它本身
-
(3)NaN与任何数字计算得到的都是NaN
-
-
2.isNaN(数据):检测一个数据是不是NaN 得到的结果是布尔类型
-
例如:
isNaN(NaN)
,结果为true -
例如:
isNaN(123)
,结果为false,表示123不是NaN
-
-
3.number类型浮点数(小数)精度丢失问题
-
(1)小数在进行数学计算时,会有一定的误差,这是计算机本身的bug,不仅是js语言,其他语言也有这个问题
-
(2)解决方案:不要让两个小数比较大小,这种情况一般不会影响正常开发
-
<script>
/*NaN: not a number 不是一个数字
* 1.NaN是number数据类型中一个特殊的数值,是数学计算错误得到的一个结果
* 2.NaN与任何数字都不相等,包括它的本身
* 3.NaN与任何数字计算得到的都是NaN
isNaN(数据):判断一个数据是不是NaN,结果为布尔类型 true:是 false:不是
*/
//1.NaN:not a number 不是一个数字
//NaN是number数据类型中一个特殊的数值,是数学计算错误得到的一个结果
let num = '张三' - 100;//当某个表达式无法计算(计算错误时),会得到NaN
console.log ( num ); //NaN
console.log ( typeof NaN ); //number
//2.NaN与任何数字都不等,包含它本身
console.log ( NaN == 0 ); //false
console.log ( NaN == NaN ); //false
//3.NaN与任何数字计算得到的都是NaN
console.log ( NaN + 100 ); //NaN
//4.isNaN(数据):检测一个数据是不是NaN 得到的结果是布尔类型
console.log ( isNaN ( NaN ) ); //true
console.log ( isNaN ( 123 ) ); //false
//如果检测的数据不是number类型,js编译器会尝试着将这个数据转化为number类型,然后再判断
//这种数据类型转换称为隐式转换:下一小节讲解
console.log ( isNaN ( "abc" ) ); //true
//5.(课后了解即可)number浮点数(小数)精度丢失
//小数在进行数学计算时,会有一定的误差,这是计算机本身的bug,不仅是js语言,其他语言也有这个问题
//解决方案:不要让两个小数比较大小,这种情况一般不会影响正常开发
console.log ( 0.1 + 0.2 ); //0.300000000000004
console.log ( 0.1 + 0.2 == 0.3 ); //false
console.log ( 0.4 + 0.5 ); //0.9
console.log ( 1.1 - 0.2 ); //0.9000000000000001
</script>
3.字符串比较
-
1.字符串比较规则是按照字母的顺序挨个进行比较,与字符串长度无关
-
2.字符串比较区分大小写
<script>
/*
1.字符串比较规则,按照字母的顺序,挨个比较
2.字符串的比较与长度无关
3.字符串的比较区分大小写
*/
// 字符串的比较是挨个比较对应顺序位置的字母,与长度无关
console.log('abc' > 'b'); // false,a比d小,所以abc比d小
// 字符串的比较区分大小写,小写大于大写(与ASCII码表对应)
console.log('a' > 'A'); // true,a对应ASCII码表为97,A为65
</script>