<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
/* 1.其他数据类型转转为Number类型
isNaN Number parseInt parseFloat 在进行加减乘除运算符时
列子 true ->1 false->0 ""->0 "12"->12 "sss"->NaN null->0 undefined -> NaN '12px'->12/NaN(看用谁装换)
引用数据类型转换为数字
{} /^$/ function(){} ---->NaN
*
*
*
* []--->""--->0
* 解释 引用数据类型调用toString方法把数组装换为字符串,在调用number把字符串装换为数字
*
* js中的数学运算
* + - * 、
* 除了加法具有特殊性,其他运算符都是数学运算,遇到了非有效类型都会转换为数字运算
* 加法的特殊性:遇到字符串属于字符串拼接 不是字符串才是数学运算
* 1-'1' 0
* 10*null 0
* 10/undefined NaN
* 10*[10] 100
* 1+'1' '11'
* 1+'null' '1null'
*
*
* 字符串拼接: 是把其他的值转换为字符串然后在进行拼接(toString)
* 其他数据类型在调用toString时时直接的用单双引号包起来即可,
* 只有对象的toSring是 '[Object,Object]'
* */
// var a=1+null+true+undefined+[]+'珠峰'+null+undefined+[]+10;
/*
1+null 1
1+true 2
2+undefined NaN
NaN+[] 'NaN'
'NaN'+'珠峰' 'NaN珠峰'
'NaN珠峰'+null 'NaN珠峰'
'NaN珠峰'+undefined 'NaN珠峰undefined'
'NaN珠峰undefined'+[] 'NaN珠峰undefined'
'NaN珠峰undefined'+_10 'NaN珠峰undefined10'
*/
// console.log(a);//NaN珠峰undefined10
// 2.将其他数据类型转换为布尔类型
/*Boolean ! !!*/
// 在条件判断的时候也会转换为布尔类型
// 0 NaN "" null undefined 是false 其余都是true
// [] true
//-1 true
// if (box){ 看box拿到的值来看条件是否成立
//
// }
/*
* if (3+'3px'){
* 条件成立
*
*
*
* }
*
*if (3-'3px'){
* 条件不成立
* }
* */
// 在使用==比较的时候
//在使用==号比较的时候如果等号左右两边的数据类型不一样的话浏览器会自动把他的数据类型转换为一样
// 并且===不会
// javascript
// ===>对象和对象 比较的是空间地址,不是相同扥空间结果是false
// []==[] ----> false
// var a={}
// b=a;
// a==b ---->true
// 对象和数字: 把对象转换为数字
// []==0 -->true
//{}==NaN --->false NaN和任何数字都不相等
// 对象和字符串:把两边都转换为数字比较的
// []==''-->true
// [12]=='21px' false
//对象和布尔:把两边都转换为数字
// []==true --->false
// []==false --->true
// ![]==false ---->false
// 字符串和数字 字符串转换为数字
// 字符串和布尔 都转换为数字
// 布尔和数字 布尔转换为数字
// ==>规律:两个等于号比较,左右两边的数据类型不一样,浏览器会自动他两边的数据类型转换为数字在比较,但是null和undefined除外
//null==undefined //true
//null===undefined //false
// null以及undefined和其他任何值都不相等
// null==0 --->false
</script>
</html>