JavaScript:三、数据类型
JavaScript 将数据类型分为两大类,分别是基本数据类型(或称为值类型)和复杂数据类型 (或称为引用类型)。
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义 (Undefined)、Symbol。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。
3.1基本数据类型
3.1.1布尔型(boolean)
true 和 false 值只有全部为小写时才表示布尔型
声明变量并赋值布尔型数据的示例代码如下
var flag1=true
console.log(flag1) //输出:true
var flag2=false
console.log(flag2) //输出;false
3.1.2数字型(Number)
JavaScript 中的数字可以分为整数和浮点数(可以表示小数),它们同属于数字型,在数字前面还可以添加“-”符号表示负数,添加“+”符号表示正数(通常情况下省略“+”)。
在 JavaScript 中使用整数时,一般情况下使用十进制表示,除此之外还可以使用八进制或十六进制表示。
八进制:
八进制的值第一位必须是零0,后面每一位数的范围在0~7。如果某一位数超出范围,首位的0会被忽略,后面的数值会按照十进制来解析
十六进制:
十六进制的值前两位必须是0x,后面每一位十六进制数字的范围在0~9及A~F,字母A~F可以大写也可以小写。
声明 3 个变量,分别赋值为八进制、十进制、十六进制的整数,示例代码如下。
var oct = 032; // 八进制表示的 26
var dec = 26; // 十进制数表示的 26
var hex = 0x1a; // 十六进制数表示的 26
a.标准格式:数学中小数的写法
var a=2.11
console.log(a) //输出:2.11
b.科学记数法:将数字表示成一个数与 10 的 n 次幂相乘的形式,程序中使用 E(或 e)后面跟一个数字的方式表示 10 的 n 次幂。
var b=2E3
console.log(b) //输出:2000
3.1.3字符串(string)
在 JavaScript 中使用单引号('')或双引号("") 来标注字符串
// 单引号字符串
var num = ''; // 表示空字符串
var slogan = '知识'; // 表示字符串'知识'
// 双引号字符串
var total = "";// 表示空字符串
var str = "知识就是力量";// 表示字符串“知识就是力量”
嵌套使用时有以下两种特殊情况需要使用“\”进行转义。
⚫ 在单引号中使用单引号
⚫ 在双引号中使用双引号
单、双引号嵌套使用的示例代码如下。
// 单引号中包含双引号
var color = '"red"blue';
// 字符串内容为"red"blue
// 双引号中包含单引号
var food = "'pizza'bread";// 字符串内容为'pizza'bread
// 单引号中包含单引号
var say1 = 'I\'m …';
// 字符串内容为 I'm ...
// 双引号中包含双引号
var say2 = "\"Tom\"";
// 字符串内容为"Tom"
3.1.4空型(null)
只有一个特殊的 null 值,表示变量未指向任何对象。
声明变量并赋值为 null 的示例代码如下。
var a = null;
console.log(a); // 输出结果:null
JavaScript 语法对大小写敏感,因此变量的值只有是小写的 null 时才表示空型。
3.1.4 未定义型 (undefined)
Undefined 类型只有一个值,即undefined。在声明变量但是没有初始化时,这个变量的值就是undefined。
正常情况下,调用未声明的变量会报错,但是对未声明的变量使用typeof操作符,同样会返回"undefined"
var myname
console.log(typeof myname) //输出:undefined
3.1.5 typeof()
当不确定一个变量或值是什么类型的数据时,可以利用 typeof 操作符进行数据类型检测。
typeof 操作符以字符串形式返回检测结果。
typeof 操作符的语法格式如下。
语法格式 1
typeof 需要类型检测的数据
语法格式 2
typeof(需要类型检测的数据)
3.1.6 isNaN()
NaN,即非数值(Not a Number),如果想要判断一个变量的值是否为数字,可以使用 isNaN()进行判断,返回结果为布尔值,true 表示变量的值不是数字,false 表示变量的值是数字
console.log(isNaN('a')) //true
console.log(isNaN(222)) //false
console.log(isNaN('222')) //false
console.log(isNaN(true)) //false(可以被转换成数值 1)
3.1.7 数字型中的特殊值
数字型有以下 3 个特殊值。
a. Infinity(无穷大)
b. -Infinity(无穷小)
c. NaN(Not a Number,非数字)
console.log(Number.MAX_VALUE * 2); // 输出结果:Infinity
console.log(Number.MIN_VALUE * 2); // 输出结果:-Infinity
console.log('aaa' - 2); // 输出结果:NaN
3.2数据类型转换
3.2.1数值转换
有 3个函数可以把其他类型的值转换为数值:
(1)Number():把任何数据类型的值转换为数值
(2)parselnt():把字符串转换为整数值
(3)parseFloat():把字符串转换为浮点数值
不同类型数据转数字型数据的结果:
不同类型数据转数字型的注意事项
(1)在转换纯数字字符串时会忽略前导零。
(2)利用 parseInt()、parseFloat()和 Number()进行数据类型转换时,若数据开头有正号 “+”或负号“-”,会被当成正数或者负数。
(3)使用 parseInt()或 parseFloat()将字符串转换为数字型数据时,若字符串开头部分可被识别为数字,则转换为相应的数字;若字符串末尾部分有非数字字符,则这些非数字字符会被自动忽略;若字符串开头部分无法被识别为数字,则转换为 NaN。
1.parseInt()会直接省略数据的小数部分,返回数据的整数部分,使用 parseInt()将数据转换为数字型
console.log(parseInt(2.33)) //输出:2
2.Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
console.log(Number('2.22')) //输出:2.22
console.log(Number('a')) //输出:NaN
3.parseInt()会直接省略数据的小数部分,返回数据的整数部分
var a='12.3px'
console.log(parseInt(a))
//结果12 如果第一个字符是数字会解析(整数部分)直到遇到非数字结束
//var b='abc12.33'
// console.log(parseInt(b))
//结果:返回NaN,如果第一个字符不是数字或者符号就返回NaN
4. parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数
var a='12.2'
console.log(parseFloat(a))
var b='3FD'
console.log(parseFloat(b))
3.2.2 转换为字符串
方式一:调用toString()方法
通过调用被转换数据类型的的toString()方法,该方法不会影响到原变量,会将转换后的结果返回,需要定义新的变量接收,或者将值赋予已有变量。
但是需要注意的是,null和undefined这两个类型的值是没有toString()方法的。
Number类型转换成String
var number = 123;
console.log(typeof number); //输出:number
console.log(number); //输出:123
number = number.toString(); //调用to String()函数
console.log(typeof number); //输出:string
console.log(number); //输出:123
Boolean类型转换成String
var bool = true;
console.log(typeof bool);
console.log(bool); //输出:true
bool = bool.toString();
console.log(typeof bool); //输出:string
console.log(bool);
方式二:调用String()函数
调用String()函数,并将被转换的数据作为参数传递给函数。
使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但是对于Null和Undefined,无法调用toString()方法的情况下,它会将null 直接转换为“null”,将undefined直接转换为“undefined”。
转换null 和 undefined
var clear = null;
clear = String(clear);
console.log(typeof clear); //输出:string
console.log(clear); //输出:null
var clear2 = undefined;
clear2 = String(clear2);
console.log(typeof clear2); //输出:string
console.log(clear2); 输出:undefined
方式三:拼接字符串
任何的值和字符串做加法运算,都会先将其转换为字符串,再进行拼接操作,我们可以利用这一特点,来将一个任意的数据类型转换为String,只需要为任意的数据类型 + 一个""空串,即可将其转换为String类型。
这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用了String()函
(1)转换Boolean类型值成字符串
var bool=false
bool=bool+""
console.log('bool type='+typeof bool) //输出:bool type=string
console.log("bool="+bool) //输出:bool=false
(2) 转换Number类型值
var number = 123;
number = number + '';
console.log("number type = " + typeof number);
console.log("number = " + number);
(3)转换null
var flag = null;
flag = flag + '';
console.log("flag type = " + typeof flag);
console.log("flag = " + flag);
(4) 转换undefined
var count = undefined;
count = count + '';
console.log("count type = " + typeof count);
console.log("count = " + count);
3.3 运算符
3.3.1算术运算符
自增和自减运算符可以快速对变量的值进行递增或递减运算,自增和自减的分类如下
a.前置自增(自减)运算符:放在变量前面,返回计算后的结果。
var a=2
a=++a
console.log(a) //输出:3
b. 后置自增(自减)运算符:放在变量后面,返回计算前的结果。
var b=3
b=b--
console.log(b) //输出:3
c . 使用 toFixed()方法可以规定浮点数的小数位数
var num=1.32
console.log(num.toFixed(1)) //输出:1.3
d.加号“+”可以用于字符串拼接,示例代码如下。不要求使用+进行前后一致(与 python 的区别)
var name = '小强';
var sex = '男';
var str = name + ':' + sex; // 字符串拼接
console.log(str); //输出:小强:男
显式转换与隐式转换的区别如下。
- 显示转换:也称为强制类型转换,是手动进行的,例如 Boolean()、parseInt()等都属于显示转换。
- 隐式转换:自动发生,当操作的两个数据类型不同时,JavaScript 会按照既定的规则来进行自动转换
// 利用隐式转换将数据转换为数字型数据
console.log('12' - 0);
// 输出结果:12console.log('12' * 1);
// 输出结果:12
console.log('12' / 1);
// 输出结果:12
// 利用隐式转换将数据转换为字符串型数据
console.log(12 + '');
// 输出结果:12
console.log(true + '');
// 输出结果:true
console.log(null + '');
// 输出结果:null
console.log(undefined + '');
// 输出结果:undefined
3.3.2赋值运算符
赋值运算符用于将运算符右边的值赋给左边的变量。
特殊情况:当“+=”运算符左右两边同为字符串类型或有一边为字符串类型数据时,将进行字符串拼接并赋值
3.3.3比较运算符
比较运算符用于对两个数据进行比较,比较结果是布尔值 true 或 false
==、!=和===、!==的区别
a. ==、!=在比较不相同类型的数据时,首先会自动将要进行比较的数据转换成相同的
数据类型,然后再进行比较。
b.===、!==在比较不相同类型的数据时,不会进行数据类型的转换。
3.3.4 逻辑运算符
逻辑运算符用于条件判断,下面列举一些 JavaScript 中常用的逻辑运算符。
// 逻辑“与”
console.log(123 && 456); // 输出结果:456
console.log(2 > 1 && 3 > 1); // 输出结果:true
// 逻辑“或”
console.log(123 || 456); // 输出结果:123
console.log(2 < 1 || 3 < 1); // 输出结果:false
// 逻辑“非”
console.log(!(2 > 1)); // 输出结果:false
如果通过左表达式能够确定最终值时,则不运算右表达式的值,此时称为短路。
短路效果的示例代码如下。
var num = 1;
false && num++; // && 短路情况
console.log(num); // 输出结果:1
true || num++; // || 短路情况
console.log(num); // 输出结果:1
3.3.5 三元运算符
三元运算符也称为三元表达式,使用问号“?”和冒号“:”两个符号来连接,
根据条件表达式的值来决定问号后面的表达式和冒号后面的表达式哪个被执行。
其语法格式如下。
条件表达式 ? 表达式 1 : 表达式 2
如果条件表达式的值为 true,则返回表达式 1 的执行结果。
如果条件表达式的值为 false,则返回表达式 2 的执行结果。
下面演示三元运算符的使用。声明变量 age 并赋值,判断变量 age 的值是否大于等于 18,如果大于等于 18,则输出“已成年”,否则输出“未成年”,
示例代码如下。
var age = 15;
var status = age >= 18 ? '已成年' : '未成年';
console.log(status); // 输出结果:未成年
3.3.6 位运算符
位运算符用来对数据进行二进制运算,在运算时,位运算符会将参与运算的操作数视为由 二进制数(0 和 1)组成的 32 位的串
使用 “15 & 9” 将 15 与 9 进行按位 “ 与 ” 运算,具体演算过程如下。 使用 “15 | 9” 将 15 与 9 进行按位 “ 或 ” 运算,具体演算过程如下。
3.3.7 运算符优先级
JavaScript 中运算符的优先级,表中由上至下递减,结合方向表示同级运算符执行顺序
标签:输出,console,log,JavaScript,数据类型,运算符,字符串,var From: https://blog.csdn.net/2401_86036532/article/details/143187290