『JavaScript』数据类型转换和运算符

👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年6月6日星期一

🌌上期文章:『Web技术』CSS基础入门

📚订阅专栏:Web基础入门
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

在这里插入图片描述


1.字符串转整数

parseInt() 方法

使用 parseInt() 方法,参数为字符串,结果为该字符串转换而来的整数;

转化规则是:如果字符串的首字符不是一个数字,转换失败,返回 NaN;否则,转换到字符串中第一个不是数字的字符止,即,遇到字母、小数点下划线等字符立即停止转换。需要注意的是,16 进制的符号 0x 不会让转换停止。
parseInt() 还可以有第二个参数,表示待转换字符串的进制。下面给一些例子:

parseInt("12");  
parseInt("12.2");  
parseInt("C",16);  
parseInt("12a2");  
parseInt("0XC");     //以上均返回数字12  
parseInt("a12");     //失败  

Number()

使用 Number() 转换一个字符串,这个字符串必须是只含有数字的字符串,即数字的字符串形式。

Number("12");     //返回12  
Number("12a2");   //返回NaN  
Number("");       //返回0  

2.字符串转小数

字符串转小数也有两种方式:parseFloat()Number()

parseFloat() 方法只转换到字符串中第一个不是数字的字符为止,当然这个字符不包括第一个小数点。

parseFloat("12");      //返回12  
parseFloat("12.2a");   //返回12.2  
parseFloat("12.2.2");  //返回12.2,第二个小数点会让转换停止  
parseFloat(null);      //返回0 

3.数字转字符串

toString() 实现一般的数字转字符串,String() 则是强制类型转换

toString() 括号内有一个可选的参数,指以几进制的形式转换该字符串,如数字12调用 toString(16) 得到的结果就是 C,即12的16进制表示方式。

var myNum = 15;  
console.log(myNum.toString());       //输出"15"  
console.log(myNum.toString(16));     //输出"F"  
console.log(String(myNum));          //输出"15"  

String() 可以转换 null 和 undefined,而 toString() 不可以。

var myNum = 15;  
console.log(myNum.toString());       //输出"15"  
console.log(myNum.toString(16));     //输出"F"  
console.log(String(myNum));          //输出"15" 

4.布尔型与其他类型的相互转换

  • 布尔型转为字符串直接就是字符串 true 或者 false;
  • 布尔型中的 true 转换为数字 1,布尔型中的 false 转换为数字 0;
  • 数字 0、null、undefined、空字符串转换为布尔型的 false,其他所有都是转换为 true。
var myBool = ture;  
myBool.toString();     //返回"true"  
Number(true);          //返回1  
Boolean("js");         //返回true  
Boolean("");           //返回false  

5.+ - * / %运算符

JavaScript中的加号除了具有数学中将两个数字相加的作用外,还能对字符串做连接操作。

对两个数字相加和数学中一样,字符串相加就是拼接字符串的意思,比如Java+Script的结果是字符串JavaScript

当字符串和数字相加时需要进行类型转换,数字会先转为字符串,然后再做字符串的拼接。

JavaScript中的比较运算符有==,===,>,<,!=,>=等。

  • ==叫做相等,===叫做严格相等。双等号和三等号的区别是:三等号要求数据类型和值都相等,双等号只需要值相等即可,相等包含严格相等。

严格相等先比较两个对象的数据类型是否相等,不相等则结束比较,返回false,如果相等在数据类型不同时,尝试进行数据类型转换,例如,在字符串和数字的比较中,字符串会被转为数字再比较;布尔值true转为数字1,布尔值false转为数字0

如果数据类型相同,相等和严格相等都会直接比较值,值相等返回true

需要特别注意的是,以上仅仅适用于非对象类型。对于对象类型,相等或者严格相等比较的都是对象的引用,而不是具体的值,就是说,一个对象和其他任何对象都是不相等的,即使两者属性、值都相等。

var stringVariable = "2";  
var number1 = 2;  
var number2 = 2;  
console.log(stringVariable == number1);//true  
console.log(stringVariable === number1);//false  
console.log(number1 === number2);//true  
var studentA = {  
name:"Bob",  
age:22  
}  
var studentB = {  
name:"Bob",  
age:22  
}  
console.log(studentA == studentB);//false,因为不是同一个对象  
var studentC = studentA;  
console.log(studentA == studentC);//true,因为是同一个对象  

studentA赋值给studentC,这时studentCstudentA指向内存中的同一个地址块,视为同一个对象,所以两者相等。

  • 不等
    对应于上面的等号,不等号也有两种:!=!==!===互为相反,==成立,!=一定不成立。
    !=====互为相反,严格相等成立,则严格不相等不成立。

  • 其它
    大于,小于,大于等于,小于等于的比较规则如下:
    比较的两个对象都是数字,按照数学中数字的比较方法。
    数字和字符串比较,字符串转为数字后再比较。
    字符串和字符串比较,从第一个字符开始,逐个比较,发现不相等立即返回。字符按照ASCII编码值的大小比较,一般只要记住:数字<大写字母<小写字母,字母a小于字母zA小于Z, 比较过程中,当一个字符串结束另外一个字符串还有,还没有比较出大小,则长的字符串较大。

var number1 = 1;//定义变量number1  
var number2 = 2;//定义变量number2  
var string1 = "3";//string1  
var lowerLetter = "a";//定义变量lowerLetter  
var upperLetter = "A";//定义变量upperLetter  
var string1 = "aa";//定义变量string1  
var String2 = "ab";//定义变量String2  
console.log(number1<number2);//输出true  
console.log(number2<string1);//输出true  
console.log(upperLetter<lowerLetter);//输出true  
console.log(lowerLetter<string1);//输出false  
console.log(string1<string2);//输出true  

6.逻辑运算符

在介绍逻辑运算符之前,我们必须明确逻辑运算符的操作数只能是布尔型,其他类型都会被转换为布尔型:除了0nullundefined""外,其他的值转换为布尔值都是true

  • 逻辑与
    逻辑与有两个操作数,中间用&&连接,只有两个操作数都是true结果才是true; 其中一个操作数不是布尔型,当左操作数为真值时,返回右操作数。当左操作数为假值时,返回左操作数。
  • 逻辑或
    逻辑或同样有两个操作数,用||连接,至少有一个操作数为true时结果为true; 其中一个操作数不是布尔型**,当左操作数为真值时,返回左操作数。当左操作数为假值时,返回右操作数。**
  • 逻辑非
    逻辑非只有一个操作数,!后连接操作数或表达式,意思是将操作数取反;
    如果操作数不是布尔型,编译器首先将其他类型转换为布尔型,然后返回true或者false
console.log(true&&false);//false  
console.log(true||false);//true  
console.log(!false);//true  
var number1 = 1;  
var number2 = 0;  
var string = "a";  
console.log(number1&&string);//输出字符串"a"  
console.log(number1||string);//输出数字1  
console.log(!number1);//false  

7.条件运算符(就是java中的三元运算符)

条件运算符由?:构成,三个操作数分别在?的左边、右边以及:的右边,第一个操作数如果是真值,整个表达式返回第二个操作数的值;第一个操作数如果是假值,返回第三个操作数的值。

一般我们说到JavaScript中的三元运算符,指的就是条件运算符,因为它有三个操作数。条件运算符通常用来简化表达式。

var result1 = a>b?a:b;//result1赋值为a和b中大的那一个  
var result2 = (a==5)?(a+1):(a-1);//a为5,返回a+1,否则返回a-1  

8.赋值运算符(没什么新东西)

赋值运算符就是=号,其实这个在前面出现过很多次了。赋值运算符的左边是一个变量或者对象的属性,右边是这个变量的值,意思是设置左边变量的值为右边的具体值。

除了基本的等号外,赋值运算符还可以和算术运算符结合。例如a+=1表示a=a+1,其中就把相加和赋值结合了起来。同理,相减、相乘、相除、取余、位运算都可以和赋值结合起来。如下:

var b = 1;  
b += 1;//等价于b = b+1  
b *= 1;//等价于b = b*1  
b /= 1;//等价于b = b/1  
b %= 1;//等价于b = b%1  
b &= 1;//等价于b = b&1  

9.运算符的优先级

JavaScript中运算符的优先级和数学中运算符的优先级意思相同,优先级高的运算符比优先级低的运算符先计算,例如数学中1+2*3算式,先计算2*3,结果再与1相加,所以乘法的优先级高于加法,在JavaScript中,不同的优先级也是这个作用。

下面是常见的运算符的优先级:

分类运算符含义结合性
1++前后增量R
1前后减量R
1逻辑非R
2* / %乘 除 求余L
3+ -加减L
4< <= > >=比较数字顺序L
4in测试属性是否存在L
5==判断相等L
5!=判断不等L
6&按位与L
7&&逻辑与L
8?:条件运算符R
9=赋值R
9+= -= *= /= %=运算且赋值R
10,忽略第一个操作数L

从上到下优先级逐渐降低。第一栏数字相同的运算符优先级相同,

加减乘除的优先级高于比较运算符,赋值运算符的优先级几乎是最低的

var a = 1;  
var b = 2;  
var c = ++a+b;  

因为++的优先级高于+,所以上面的第三个句子等价于:

var c = (++a)+b;
  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starry陆离

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值