数据类型转换
自动转换:js会通过关系运算符,逻辑运算符,算数运算符,if语句等实现隐式转换
根据需要自动进行类型转换,但是转换时会遵循一定的规则
强行转换->通过内置对象的方法强制转换,比如:parseInt(),parseFloat(),Number(),String(),Boolean(),toString()
转为字符串【掌握】
自动转换
类型 | 转换字符串型后的结果 |
number | NaN、0、或数值对应的字符串 |
null | "null" |
boolean | "true"、"false" |
undefined | "undefined" |
object | 若对象存在为其toString()方法的值,若对象不存在为"undefined" |
强制转换: String(),object.toString()
转为数字类型【掌握】
自动转换
类型 | 转换为数字型后的结果 |
string | 若内容为数字则为相应数字,否则为NaN |
null | 0 |
boolean | true转为1,false转为0 |
undefined | NaN |
object | NaN |
注意:数学运算(特殊情况:+再出现字符串的情况下不是数学运算,而是字符串的拼接)
强制转换 Number()
按照自动转换规则转换 parseInt(string) 、parseFloat(string)
isNaN() 函数用于检查其参数是否是非数字值
注意:parseInt还可以接受第二个参数(2到36之间),表示呗解析的值的进制,返回该值对应的10进制数。parseInt的第二个参数为10,即默认是十进制转十进制
转为布尔类型【掌握】
自动转换
类型 | 转换布尔型后的结果 |
""或'' | FALSE |
0或0.0 | FALSE |
NaN | FALSE |
undefined | FALSE |
null | FALSE |
其它 | TRUE |
强制转换 Boolean(), !!
特殊案例:
console.log(Boolean([])); // true
console.log([] == false); // true; ==两边的数据类型不一致,需要转为数字进行比较;[]=>字符串''=>数字0
console.log(![] == false); // true ==的优先级比较低,肯定是先算左边 ![] 然后与后面进行比较,[]转为布尔值为true 取反 false false==false
console.log('0' == false); // true
在==比较的过程中,数据转换的规则 类型一样的几个特殊点:
{} == {} false,对象对比的是堆内存的地址
[] == [] false
NaN == NaN false
类型不一样的转换规则:
-
null == undefined true,但是换成 === 结果是false(因为类型不一致),剩下null/undefined和其他任何数据类型值都不相等
-
字符串 == 对象,要把对象转为字符串
-
剩下如果 == 两边数据类型不一致,都是需要转换为数字再进行比较
如果类型都是字符串,就会按照ASCII编码的进行对比
运算符
表达式
常量 1.2 'str' false
变量 x y
复合 x+1
操作符:表达式 x+1中的x,1为操作符
运算符:表达式x+1的,+为运算符
算术运算符(+,-, *,/,%【重要】,++【重要】,--)
y=5 :
运算符 | 描述 | 例子 | x 运算结果 | y 运算结果 |
---|---|---|---|---|
+ | 加法 | x=y+2 | 7 | 5 |
- | 减法 | x=y-2 | 3 | 5 |
* | 乘法 | x=y*2 | 10 | 5 |
/ | 除法 | x=y/2 | 2.5 | 5 |
% | 取模(余数) | x=y%2 | 1 | 5 |
++ | 自增 | x=++y | 6 | 6 |
x=y++ | 5 | 6 | ||
-- | 自减 | x=--y | 4 | 4 |
x=y-- | 5 | 4 |
用于字符串的 + 运算符
+ (拼接)运算符用于把文本值或字符串变量加起来(连接起来)。
如需把两个或多个字符串变量连接起来,请使用 + 运算符。
“+”算数加和字符串想接 i++ 先赋值,再加1;++i 先加1,再赋值// 实现各行换色效果
for(var i=1;i<=10;i++){
if(i%2==0){
document.write("<font color='red'>"+i+"</font>");
}else{
document.write("<font color='green'>"+i+"</font>");
}
}
注意:正号有隐式类型转换功能
alert(typeof(+'5')) // number
比较运算符(>,<,>=,<=,==,!=不等于,!==不全等于)【了解】
x=5 :运算符 | 描述 | 比较 | 返回值 |
---|---|---|---|
== | 等于 | x==8 | false |
x==5 | true | ||
=== | 绝对等于(值和类型均相等) | x==="5" | false |
x===5 | true | ||
!= | 不等于 | x!=8 | true |
!== | 不绝对等于(值和类型有一个不相等,或两个都不相等) | x!=="5" | true |
x!==5 | false | ||
> | 大于 | x>8 | false |
< | 小于 | x<8 | true |
>= | 大于或等于 | x>=8 | false |
<= | 小于或等于 | x<=8 | true |
console.log(1.2+1.1==2.3) //true
console.log(1.2-1.1==0.1) //false
总结:比较运算符的结果是boolean类型
赋值运算符(=【掌握】,+=【掌握】,-=, *=,/=,%=)
给定 x=10 和 y=5 :
运算符 | 例子 | 等同于 | 运算结果 |
---|---|---|---|
= | x=y | x=5 | |
+= | x+=y | x=x+y | x=15 |
-= | x-=y | x=x-y | x=5 |
*= | x*=y | x=x*y | x=50 |
/= | x/=y | x=x/y | x=2 |
%= | x%=y | x=x%y | x=0 |
var a = 10;
var arr = ['张三','李四','王武','孙刘','马奇']
+= 表示给num+1,再把相加之后的结果赋给num这个变量
var i=10;
i+=1 // i=i+1 效果一样 i++
使用场合:累加求和,字符串拼接
逻辑运算符(!,&&,||)【两边均为表达式】【重要】
给定 x=6 以及 y=3:
运算符 | 描述 | 例子 |
---|---|---|
&& | and | (x < 10 && y > 1) 为 true |
|| | or | (x==5 || y==5) 为 false |
! | not | !(x==y) 为 true |
运算符 | 描述 | 解释 |
! | not | 逻辑取反,(逻辑非) 如果操作数能够转换为 true 则返回 false;否则返回 true。 |
&& | and | 逻辑且;只有两个操作数都为 true 时,才返回 true,否则返回 false。 |
|| | or | 逻辑或;只要一个操作数成立时,不在执行第二个式子,反之,第一个式子不成立,执行第二个式子。 |
??(了解) | 空值合并运算符,如果左侧的表达式为 null或者 undefined 时,返回其右侧表达式,否则返回左侧表达式。 |
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
1、只要 || 前面为 false,不管 || 后面是 true 还是 false,都返回 || 后面的值。
2、只要 || 前面为 true,不管 || 后面是 true 还是 false,都返回 || 前面的值。
&&运算方法:
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
1、只要 && 前面是 false,无论 && 后面是 true 还是 false,结果都将返 && 前面的值;
2、只要 && 前面是 true,无论 && 后面是 true 还是 false,结果都将返 && 后面的值;
使用技巧:|| 或 运算符使用技巧
// 如果你必须给一个变量赋默认值,可以简单的这样写
var a;
console.log(a) // undefined
a = a||'default value';
console.log(a) // default value
a = a||'new value';
console.log(a) // new value
// 在函数中传參使用,如果传參就使用传递过来的参数,没有传參就使用默认值
function show(10){
var shownum = num || 20;
console.log(shownum);
}
show(10);
思考:
console.log( 0 || 1 ); // 1
console.log( 1 || 2 ); // 1
console.log( 0 && 1 ); // 0
console.log( 1 && 2 ); // 2
条件运算符【三元运算符/三目运算符】【重要】
条件表达式?结果1:结果2 如果条件表达式结果为true则返回结果1 如果条件表达式结果为false则返回结果2// 条件 ? 值 1 : 值 2
var m=100>99?66:33
alert(m)
运算符的优先级
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。 小括号>算术运算符>比较运算符>逻辑运算符>赋值运算符JSON数据类型
JSON:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式 主要作用: JSON 是用于存储和传输数据的格式。 JSON 通常用于服务端向网页传递数据 。 特性: json的键不能重复,如果键是一个完整的单词,可以直接写,如果键里面包含了空格,要用引号引起来 格式:{key: value, key: value}
数据为 键/值 对。
多个数据由逗号分隔
value可以为任意类型
定义复杂的json格式
var address = {
"city":"成都",
"province":'四川',
"aaa":{
"name":'Test',
"value":{
"value":"123"
}
},
"bbb":[{
"name":"lisi"
},{
"name":"zhangsan"
},{
"name":"wangwu"
}]
};
标签:转换,log,数据类型,console,运算符,&&,false,true
From: https://blog.csdn.net/weixin_71949204/article/details/141984278