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

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


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进制表示方式。

varmyNum=15;  

console.log(myNum.toString());       //输出"15"  

console.log(myNum.toString(16));     //输出"F"  

console.log(String(myNum));          //输出"15"  

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

varmyNum=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。

varmyBool=ture;  

myBool.toString();     //返回"true"  

Number(true);          //返回1  

Boolean("js");         //返回true  

Boolean("");           //返回false  

5.+ - * / %运算符

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

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

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

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

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

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

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

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

varstringVariable="2";  

varnumber1=2;  

varnumber2=2;  

console.log(stringVariable==number1);//true  

console.log(stringVariable===number1);//false  

console.log(number1===number2);//true  

varstudentA= {  

name:"Bob",  

age:22  

}  

varstudentB= {  

name:"Bob",  

age:22  

}  

console.log(studentA==studentB);//false,因为不是同一个对象  

varstudentC=studentA;  

console.log(studentA==studentC);//true,因为是同一个对象  

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

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

varnumber1=1;//定义变量number1  

varnumber2=2;//定义变量number2  

varstring1="3";//string1  

varlowerLetter="a";//定义变量lowerLetter  

varupperLetter="A";//定义变量upperLetter  

varstring1="aa";//定义变量string1  

varString2="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
4 in 测试属性是否存在 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;

相关文章
|
1月前
|
存储 JavaScript 前端开发
【JavaScript技术专栏】JavaScript基础入门:变量、数据类型与运算符
【4月更文挑战第30天】本文介绍了JavaScript的基础知识,包括变量(var、let、const)、数据类型(Number、String、Boolean、Undefined、Null及Object、Array)和运算符(算术、赋值、比较、逻辑)。通过实例展示了如何声明变量、操作数据类型以及使用运算符执行数学和逻辑运算。了解这些基础知识对初学者至关重要,是进阶学习JavaScript的关键。
|
1天前
|
JavaScript 前端开发 索引
JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型
【6月更文挑战第25天】JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型,而Object包括Array、Function等是引用类型。Objects可以包含键值对,Array是特殊的Object。Functions也是对象。`null`和`undefined`被视为特殊的原始值。
7 1
|
2天前
|
JavaScript 前端开发
javaScript数据类型代码详细解读
javaScript数据类型代码详细解读
|
7天前
|
JavaScript 前端开发 开发者
JavaScript进阶-解构赋值与展开运算符
【6月更文挑战第19天】ES6的解构赋值与展开运算符增强了JS开发效率。解构允许直接从数组或对象提取值,简化数据提取,而展开运算符则用于合并数组和对象或作为函数参数。解构时注意设置默认值以处理不存在的属性,避免过度嵌套。展开运算符需区分数组与对象使用,勿混淆于剩余参数。通过示例展示了这两种操作在数组和对象中的应用,提升代码可读性与简洁度。
|
14天前
|
JavaScript 前端开发
JavaScript基础-运算符与条件语句
【6月更文挑战第11天】本文探讨了JavaScript中的运算符和条件语句,包括算术、比较、逻辑、赋值及三元运算符。强调了使用严格等于`===`避免类型转换错误,理解逻辑运算符短路特性和优化条件结构以提高代码可读性。通过示例展示了正确使用这些概念,以提升代码质量和维护性。
|
14天前
|
存储 JavaScript 前端开发
JavaScript基础-数据类型与转换
【6月更文挑战第11天】本文介绍了JavaScript的核心概念——数据类型和转换机制。JavaScript包含六种原始类型(Number, String, Boolean, Undefined, Null, Symbol)和一种复合类型(Object)。文章讨论了特殊值(NaN, Infinity)及其易错点,如误判NaN和null与undefined的混淆。此外,还阐述了隐式与显式类型转换,提醒开发者注意非数字字符串转Number和空字符串转Boolean时的陷阱。理解这些概念有助于编写更健壮的代码。
|
18小时前
|
JavaScript 前端开发 索引
JavaScript有以下几种数据类型
JavaScript有7种基本数据类型(Number, String, Boolean, Null, Undefined, Symbol, BigInt)和3种引用类型(Object, Array, Function)。基本类型包括数值、文本、布尔值、空值和未定义,ES6引入了Symbol和BigInt。引用类型主要涉及对象、数组(特殊对象)和函数,其中函数也是对象。注意,null和undefined有时被视为原始值。
6 0
|
4天前
|
JavaScript 前端开发
JS常见的运算符有哪些?
JS常见的运算符有哪些?
7 0
|
1月前
|
存储 前端开发 JavaScript
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
|
1月前
|
JavaScript 前端开发
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
19 1